הקצאת רשיונות משתמשים ב- Microsoft 365 (Azure AD) באמצעות PowerShell


בוא נבחן כיצד לנהל רשיונות משתמשים (מנויים) ב- Microsoft 365 (Azure AD) באמצעות PowerShell. נראה כיצד להקצות או להסיר רשיון, לקבל נתונים סטטיסטיים על רשיונות מוקצים ולאפשר הקצאת רשיונות אוטומטית באמצעות קבוצות Azure (רישוי מבוסס קבוצה).

באפשרותך לנהל רשיונות משתמשים של Microsoft 365 בפורטל Azure או באמצעות מרכז הניהול של M365. חפש משתמש ב- Azure AD ופתח את המקטע רשיונות. כאן תוכל להקצות כל אחד מהרשיונות הזמינים למשתמש ולבחור מוצרים זמינים. בחברות גדולות, נוח יותר לנהל רשיונות Microsoft 365 באמצעות PowerShell.

כדי להתחבר ל- Microsoft 365, השתמש במודול Azure AD PowerShell:

Connect-AzureAD

תוכל למצוא רשימה של רשיונות זמינים ב- Azure AD -> Licenses -> All products. במקרה שלנו, 25 רשיונות מפתח של Microsoft 365 E5 זמינים, ו- 9 מהם בחינם.

באמצעות PowerShell, באפשרותך להציג מידע אודות רשיונות זמינים ומוקצים בדייר Azure שלך באופן הבא:

Get-AzureADSubscribedSku | Select -Property Sku*,ConsumedUnits -ExpandProperty PrepaidUnits

SkuPartNumber הוא שם של רישיון (תוכנית רישיון). זמין מציג את מספר הרשיונות שנרכשו במסגרת תוכנית זו. ConsumedUnits פירושו מספר הרשיונות שהוקצו למשתמשים.

כדי לטפל ברשיון, SkuID שלו משמש בקבצי script של PowerShell.

באפשרותך להשתמש במוצרים שונים של Microsoft במסגרת תוכנית רשיון.

בדוגמה שלנו, תוכנית הרישוי DEVELOPERPACK_E5 היחידה זמינה בדייר זה. בוא נציג את שירותי Microsoft 365 הזמינים למשתמשים שלך.

$licenses = Get-AzureADSubscribedSku
$licenses[0].ServicePlans

העמודה ServicePlanName מציגה את שמות המוצרים הזמינים למשתמשים בעלי רשיון זה.

באפשרותך להציג מידע אודות רשיונות שהוקצו למשתמש. קבל את ה- SkuID של הרשיון שהוקצה למשתמש ולאחר מכן הצג את שמו:

$SkuIDs=(Get-AzureADUser -ObjectId maxb@a-d.onmicrosoft.com| Select -ExpandProperty AssignedLicenses).SkuId
Foreach ($SkuID in $SkuIDs) {
(Get-AzureADSubscribedSku | Where {$_.SkuId -eq $SkuID}).SkuPartNumber
}

בוא ננסה להקצות רשיון למשתמש. לפני שתעשה זאת, ודא שהמיקום (מדינה) מוגדר עבור המשתמש. זה חובה, שכן בהתאם למדינה המשתמשים עשויים להיות מושפעים מהחוקים המקומיים (זה חשוב במיוחד עבור Exchange Online). הגדר קוד מדינה בן 2 תווים בתבנית ISO alpha-2.

Get-AzureADUser -ObjectId maxb@a-d.onmicrosoft.com| Select UsageLocation, AssignedLicenses

אם המדינה אינה מוגדרת או שעליך לשנות אותה, הפעל את הפקודה הבאה:

Get-AzureADUser -ObjectId maxb@a-d.onmicrosoft.com | Set-AzureADUser -UsageLocation DE

לאחר מכן תוכל להקצות רשיון למשתמש:

$UserUPN="maxb@a-d.onmicrosoft.com"
$LicPlan="DEVELOPERPACK_E5"
$License = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicense
$License.SkuId = (Get-AzureADSubscribedSku | Where-Object -Property SkuPartNumber -Value $LicPlan -eq).SkuID
$assignlic = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicenses
$assignlic.AddLicenses = $License
Set-AzureADUserLicense -ObjectId $UserUPN -AssignedLicenses $assignlic
Get-AzureADUserLicenseDetail -objectid $UserUPN

באפשרותך להקצות רשיון למשתמשים מרובים בו-זמנית. לדוגמה, בוא נקצה רשיונות לכל המשתמשים באזור DE:

$LicPlan="DEVELOPERPACK_E5"
$License = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicense
$License.SkuId = (Get-AzureADSubscribedSku | Where-Object -Property SkuPartNumber -Value $LicPlan -eq).SkuID
Get-AzureADUser -Filter "UsageLocation eq 'DE'”| Set-AzureADUserLicense -AssignedLicenses $assignlic

כדי להסיר רשיון, השתמש בקובץ ה-script של PowerShell להלן:

$userUPN="maxb@a-d.onmicrosoft.com"
$LicPlan="DEVELOPERPACK_E5"
$license = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicenses
$License.RemoveLicenses = (Get-AzureADSubscribedSku | Where-Object -Property SkuPartNumber -Value $LicPlan -EQ).SkuID
Set-AzureADUserLicense -ObjectId $userUPN -AssignedLicenses $license

כדי להציג רשימה של משתמשים ללא רשיון, הפעל פקודה זו:

Get-AzureAdUser | ForEach{ $licensed=$False ; For ($i=0; $i -le ($_.AssignedLicenses | Measure).Count ; $i++) { If( [string]::IsNullOrEmpty( $_.AssignedLicenses[$i].SkuId ) -ne $True) { $licensed=$true } } ; If( $licensed -eq $false) { Write-Host $_.UserPrincipalName} }

קובץ ה- script הבא של PowerShell מאפשר לייצא את המידע אודות משתמשי Azure ורשיונות שהוקצו להם לקובץ CSV. אם לא הוקצה רשיון למשתמש, "לא מורשה" יצוין עבורו בדוח.

$Report = @()
$users= Get-AzureAdUser
Foreach ($user in  $users)  {
$SkuIDs= @()
$SkuIDs=(Get-AzureADUser -ObjectId $user.UserPrincipalName| Select -ExpandProperty AssignedLicenses).SkuId
If ($SkuIDs -ne $null) {
Foreach ($SkuID in $SkuIDs) {
$License=(Get-AzureADSubscribedSku | Where {$_.SkuId -eq $SkuID}).SkuPartNumber
$objReport = [PSCustomObject]@{
UPN = $user.UserPrincipalName
DisplayName = $user.DisplayName
Department = $user.Department
License = $License
}
$Report += $objReport
}
}
Else
{
$objReport = [PSCustomObject]@{
UPN = $user.UserPrincipalName
DisplayName = $user.DisplayName
Department = $user.Department
License = "Not licensed"
}
$Report += $objReport
}
}
$Report|Export-Csv c:\ps\aad_user_licenses.csv -Encoding UTF8 -NoTypeInformation

קשה וגוזל זמן לנהל רשיונות משתמשים בנפרד. ב- Azure AD, באפשרותך לאגד רשיון לקבוצת Azure (רישוי מבוסס קבוצה). ברגע שמשתמש נוסף לקבוצה, Azure מקצה לו רשיון באופן אוטומטי. עם זאת, דרוש לך מנוי Azure AD Premium P1 כדי להשתמש בתכונה זו. כמו כן, מודול Azure AD אינו מאפשר להקצות רשיון לקבוצה. תכונות רישוי קבוצתי זמינות בפורטל Azure או דרך Microsoft Graph API.