scenariusz

podczas migracji w hybrydzie jest taki dziwny moment, kiedy userzy są zawieszeni w dwóch środowiskach – onprem i online. skrzynki jeszcze onprem i czekają na swoją kolejkę do przerzucenia, ale już mają być włączone pozostałe usługi. zatem trzeba przypisać userom licencję z wyłączonym service planem dla Exchange Online – inaczej user będzie miał zdublowaną skrzynkę i część poczty nie będzie dochodzić [znaczy będzie, tylko nie do tej skrzynki co trzeba]. po jakimś czasie skrzynkę się migruje i włącza service plan dla usera. jest okres 3o dni 'grace period’ kiedy wszystkie usługi – czy to Skype fB czy Exchange – działają bez licencji, m.in. po to, żeby bez względu na czas migracji był okres przejściowy na zrobienie porządq.

może się więc zdarzyć, że ktoś przez przypadek nie będzie miał włączonego service planu i po 3o dniach straci dostęp do mailboxa. np. wywalił się skrypt, albo ktoś zapomniał przy jakiejś fali migracyjnej to zrobić… whatsoever.

zarządzanie licencjami póki co jest niewygodne – z niecierpliwością czekam na zarządzanie licencjami prze grupy – a na razie, to właśnie zarządzanie licencjami jest sporą niedogodnością. konstrukcja obiektów licencyjnych jest dość nieprzyjemna, moduły MSOnline i AzureAD totalnie się różnią, co oznacza całkowite przepisanie starych skryptów [albo używanie v1 – póki co nie zapowiadają, że zostanie wyłączona], łącznie z logiką….

kto nie ma licencji?

.. to aqrat mega proste…

  • połączyć się do Exchange Online
$o365creds=Get-Credential
$exchangeSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "https://outlook.office365.com/powershell-liveid/" -Credential $o365creds -Authentication "Basic" -AllowRedirection
Import-PSSession $exchangeSession -DisableNameChecking
  • połączyć się do AzureAD v2 [można i v1 – ale kod jest dla v2, trzeba mieć moduł AzureAD]
Connect-AzureAD -Credential $o365creds
  • i sam kod
Get-Mailbox|%{if( -not (Get-AzureADUserLicenseDetail -ObjectId $_.UserPrincipalName) ) { $_.UserPrincipalName } }

czego powyższa linijka nie wychwyci?

  • ktoś może mieć licencję, ale nie włączony service plan dla ExOL
  • ktoś może mieć licencję… np. na Project Online. i się nie wyświetli
  • skrzynki współdzielone nie potrzebują licencji

wyłączony service plan

a tu się zaczynają schody, bo trzeba zajrzeć do środka licencji. poniższy kod *nie jest skryptem* – to PoC, niechlujnie naskrobany na kolanie:

Get-Mailbox|%{$lic=Get-AzureADUserLicenseDetail -ObjectId $_.UserPrincipalName; if( -not $lic ) { write-host -ForegroundColor red "$($_.UserPrincipalName) - no license" } else { if(($lic.serviceplans|? serviceplanname -eq 'EX
CHANGE_S_ENTERPRISE').ProvisioningStatus -ne 'Success') { Write-Host -ForegroundColor Yellow "$($_.UserPrincipalName) - no ExOL service plan" } } }

co jest źle w powyższym kodzie?

  • sprawdzany service plan jest dla licencji E3 – trzeba sprawdzić jak się nazywają service plany i obsłużyć różne typy licencji. tutaj robocze założenie, że wszyscy mają taką samą licencję… i że jest to licencja w ogóle zawierająca Ex
  • wykorzystywanie 'write-host’ jako output jest dopuszczalne w roboczych sytuacjach, na szybko, ale jest bardzo złym zwyczajem w skryptach – trudno to potem obsłużyć, rozszerzyć, cokolwiek…

eN.

 

-o((:: sprEad the l0ve ::))o-

Zostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Time limit is exhausted. Please reload CAPTCHA.