הקצאת רשיונות Microsoft 365 בחשבונות משתמשים באמצעות PowerShell

מאמר זה חל הן על Microsoft 365 Enterprise והן Office 365 Enterprise.

המשתמשים אינם יכולים להשתמש בשירותים של Microsoft 365 עד שהוקצה לחשבון שלהם רשיון מתוכנית רישוי. באפשרותך להשתמש ב- PowerShell כדי להקצות במהירות רשיונות בחשבונות ללא רשיון.

יש להקצות תחילה מיקום בחשבונות משתמשים. ציון מיקום הוא חלק נדרש ביצירת חשבון משתמש חדש מרכז הניהול של Microsoft 365.

כברירת מחדל לא צוין Active Directory מקומי Domain Services חשבונות המסונכרנים מהרשימה שלך. באפשרותך לקבוע תצורה של מיקום עבור חשבונות אלה מ:

  • לוח מרכז הניהול של Microsoft 365
  • PowerShell
  • פורטל Azure (מדינה או אזור פרטיקשר של>פרופיל פרופיל>של משתמש>של משתמשי Active Directory>>).

הערה

למד כיצד להקצות רשיונות בחשבונות משתמשים באמצעות מרכז הניהול של Microsoft 365. לקבלת רשימה של משאבים נוספים, ראה ניהול משתמשים וקבוצות.

הקצאת רשיונות Microsoft 365 בחשבונות משתמשים באמצעות Microsoft Graph PowerShell SDK

הערה

קובץ ה- Script הבא משתמש ב- Microsoft Graph Powershell. לקבלת מידע נוסף, ראה מבט כולל על Microsoft Graph PowerShell.

לקבלת מידע אודות אופן השימוש בשיטות Connect-Graph שונות לאימות בקובץ Script ללא התערבות, עיין במאמר רכיבי cmdlet של מודול אימות ב- Microsoft Graph PowerShell.

תחילה, התחבר לדייר Microsoft 365 שלך.

הקצאה והסרה של רשיונות עבור משתמש דורשות את טווח ההרשאה User.ReadWrite.All או אחת מההרשאות האחרות המפורטות בדף ההפניה ל- API של Microsoft Graph עבור 'הקצאת רשיון'.

טווח ההרשאה Organization.Read.All נדרש כדי לקרוא את הרשיונות הזמינים בדייר.

Connect-MgGraph -Scopes User.ReadWrite.All, Organization.Read.All

הפעל את Get-MgSubscribedSku הפקודה כדי להציג את תוכניות הרישוי הזמינות ואת מספר הרשיונות הזמינים בכל תוכנית בארגון שלך. מספר הרשיונות הזמינים בכל תוכנית הוא ActiveUnits - WarningUnits - ConsumedUnits. לקבלת מידע נוסף אודות תוכניות רישוי, רשיונות ושירותים, ראה הצגת רשיונות ושירותים באמצעות PowerShell.

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

Get-MgUser -Filter 'assignedLicenses/$count eq 0' -ConsistencyLevel eventual -CountVariable unlicensedUserCount -All

כדי לאתר את המשתמשים המסונכרנים ללא רשיון בארגון שלך, הפעל פקודה זו.

Get-MgUser -Filter 'assignedLicenses/$count eq 0 and OnPremisesSyncEnabled eq true' -ConsistencyLevel eventual -CountVariable unlicensedUserCount -All -Select UserPrincipalName

באפשרותך להקצות רשיונות רק בחשבונות משתמשים שהמאפיין UsageLocation מוגדר לקוד מדינה חוקי של ISO 3166-1 alpha-2. לדוגמה, ארה"ב עבור ארצות הברית ו- FR for France. חלק מהשירותים של Microsoft 365 אינם זמינים במדינות/אזורים מסוימים. לקבלת מידע נוסף, ראה אודות הגבלות רשיון.

כדי למצוא חשבונות שאין להם ערך UsageLocation , הפעל פקודה זו.

Get-MgUser -Select Id,DisplayName,Mail,UserPrincipalName,UsageLocation,UserType | where { $_.UsageLocation -eq $null -and $_.UserType -eq 'Member' }

כדי להגדיר את הערך UsageLocation בחשבון, הפעל פקודה זו.

$userUPN="<user sign-in name (UPN)>"
$userLoc="<ISO 3166-1 alpha-2 country code>"

Update-MgUser -UserId $userUPN -UsageLocation $userLoc

לדוגמה:

Update-MgUser -UserId "belindan@litwareinc.com" -UsageLocation US

אם אתה משתמש ב- cmdlet Get-MgUser מבלי להשתמש בפרמטר -All , מוחזרים רק 100 החשבונות הראשונים.

הקצאת רשיונות בחשבונות משתמשים

כדי להקצות רשיון למשתמש, השתמש בפקודה הבאה ב- PowerShell.

Set-MgUserLicense -UserId $userUPN -AddLicenses @{SkuId = "<SkuId>"} -RemoveLicenses @()

דוגמה זו מקצה רשיון מתוכנית הרישוי של SPE_E5 (Microsoft 365 E5) למשתמש ללא רשיוןbelindan@litwareinc.com:

$e5Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E5'
Set-MgUserLicense -UserId "belindan@litwareinc.com" -AddLicenses @{SkuId = $e5Sku.SkuId} -RemoveLicenses @()

דוגמה זו מקצה SPE_E5 (Microsoft 365 E5) ו- EMSPREMIUM (ENTERPRISE MOBILITY + SECURITY E5) למשתמשbelindan@litwareinc.com:

$e5Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E5'
$e5EmsSku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'EMSPREMIUM'
$addLicenses = @(
    @{SkuId = $e5Sku.SkuId},
    @{SkuId = $e5EmsSku.SkuId}
)

Set-MgUserLicense -UserId "belinda@litwareinc.com" -AddLicenses $addLicenses -RemoveLicenses @()

דוגמה זו מקצה SPE_E5 (Microsoft 365 E5) כאשר שירותי MICROSOFTBOOKINGS (Microsoft Bookings) ו- LOCKBOX_ENTERPRISE (קופסה נעולה של לקוח) מבוטלים:

$e5Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E5'
$disabledPlans = $e5Sku.ServicePlans | `
    Where ServicePlanName -in ("LOCKBOX_ENTERPRISE", "MICROSOFTBOOKINGS") | `
    Select -ExpandProperty ServicePlanId

$addLicenses = @(
    @{
        SkuId = $e5Sku.SkuId
        DisabledPlans = $disabledPlans
    }
)

Set-MgUserLicense -UserId "belinda@litwareinc.com" -AddLicenses $addLicenses -RemoveLicenses @()

דוגמה זו מעדתקנת משתמש ב- SPE_E5 (Microsoft 365 E5) ומכבה את תוכניות השירות של Sway ו- Forms בעת עזיבתך מהתוכניות הקיימות של המשתמש לבלתי זמינות במצבו הנוכחי:

$userLicense = Get-MgUserLicenseDetail -UserId "belinda@litwareinc.com"
$userDisabledPlans = $userLicense.ServicePlans | `
    Where ProvisioningStatus -eq "Disabled" | `
    Select -ExpandProperty ServicePlanId

$e5Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E5'
$newDisabledPlans = $e5Sku.ServicePlans | `
    Where ServicePlanName -in ("SWAY", "FORMS_PLAN_E5") | `
    Select -ExpandProperty ServicePlanId

$disabledPlans = ($userDisabledPlans + $newDisabledPlans) | Select -Unique

$addLicenses = @(
    @{
        SkuId = $e5Sku.SkuId
        DisabledPlans = $disabledPlans
    }
)

Set-MgUserLicense -UserId "belinda@litwareinc.com" -AddLicenses $addLicenses -RemoveLicenses @()

דוגמה זו מעדתקנת משתמש ב- SPE_E5 (Microsoft 365 E5) ומכבה את תוכניות השירות של Sway ו- Forms תוך השארת התוכניות הקיימות של המשתמש ללא זמינות בכל המנויים האחרים במצבו הנוכחי:

$userLicense = Get-MgUserLicenseDetail -UserId belinda@litwareinc.com

$userDisabledPlans = $userLicense.ServicePlans | Where-Object ProvisioningStatus -eq "Disabled" | Select -ExpandProperty ServicePlanId

$e5Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E5'

$newDisabledPlans = $e5Sku.ServicePlans | Where ServicePlanName -in ("SWAY", "FORMS_PLAN_E5") | Select -ExpandProperty ServicePlanId

$disabledPlans = ($userDisabledPlans + $newDisabledPlans) | Select -Unique

$result=@()
$allPlans = $e5Sku.ServicePlans | Select -ExpandProperty ServicePlanId

foreach($disabledPlan in $disabledPlans)
{
    foreach($allPlan in $allPlans)
    {
        if($disabledPlan -eq $allPlan)
        {
            $property = @{
                Disabled = $disabledPlan
            }
        }
     }
     $result += New-Object psobject -Property $property
}


$finalDisabled = $result | Select-Object -ExpandProperty Disabled


$addLicenses = @(
    @{
        SkuId = $e5Sku.SkuId
        DisabledPlans = $finalDisabled
    }
)


Set-MgUserLicense -UserId belinda@litwareinc.com -AddLicenses $addLicenses -RemoveLicenses @()

הקצאת רשיונות למשתמש על-ידי העתקת הקצאת הרשיון ממשתמש אחר

דוגמה זו מקצה jamesp@litwareinc.com עם אותה תוכנית רישוי שהוחלה על belindan@litwareinc.com:

$mgUser = Get-MgUser -UserId "belindan@litwareinc.com" -Property AssignedLicenses
Set-MgUserLicense -UserId "jamesp@litwareinc.com" -AddLicenses $mgUser.AssignedLicenses -RemoveLicenses @()

העברת משתמש למנוי אחר (תוכנית רשיון)

דוגמה זו משדרגת משתמש מתוכנית הרישוי של SPE_E3 (Microsoft 365 E3) לתוכנית הרישוי של SPE_E5 (Microsoft 365 E5)::

$e3Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E3'
$e5Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E5'

# Unassign E3
Set-MgUserLicense -UserId "belindan@litwareinc.com" -AddLicenses @{} -RemoveLicenses @($e3Sku.SkuId)
# Assign E5
Set-MgUserLicense -UserId "belindan@litwareinc.com" -AddLicenses @{SkuId = $e5Sku.SkuId} -RemoveLicenses @()

באפשרותך לאמת את השינוי במנוי עבור חשבון המשתמש באמצעות פקודה זו.

Get-MgUserLicenseDetail -UserId "belindan@litwareinc.com"

למידע נוסף

ניהול Microsoft 365 באמצעות PowerShell

ניהול Microsoft 365 באמצעות PowerShell

תחילת העבודה עם Microsoft Graph PowerShell SDK

השתמש במשתמש Microsoft Graph: הקצאת ממשקי API של Sku בעלי רשיון ומנויים