تعيين تراخيص Microsoft 365 لحسابات المستخدمين باستخدام PowerShell

تنطبق هذه المقالة على كل من Microsoft 365 Enterprise Office 365 Enterprise.

لا يمكن للمستخدمين استخدام أي خدمات Microsoft 365 حتى يتم تعيين ترخيص لحسابهم من خطة ترخيص. يمكنك استخدام PowerShell لتعيين تراخيص للحسابات غير المرخصة بسرعة.

يجب أولا تعيين موقع لحسابات المستخدمين. يعد تحديد موقع جزءا مطلوبا من إنشاء حساب مستخدم جديد في مركز مسؤولي Microsoft 365.

الحسابات المتزامنة من Active Directory محلي خدمات المجال لا تحتوي بشكل افتراضي على موقع محدد. يمكنك تكوين موقع لهذه الحسابات من:

  • مركز مسؤولي Microsoft 365
  • PowerShell
  • مدخل Microsoft Azure (معلومات> جهة اتصالالبلد أو المنطقةلحساب>> مستخدم Active Directory>Users>).

ملاحظة

تعرف على كيفية تعيين تراخيص لحسابات المستخدمين باستخدام مركز مسؤولي Microsoft 365. للحصول على قائمة بالموارد الإضافية، راجع إدارة المستخدمين والمجموعات.

تعيين تراخيص Microsoft 365 لحسابات المستخدمين باستخدام Microsoft Graph PowerShell SDK

ملاحظة

يستخدم البرنامج النصي التالي Microsoft Graph Powershell. لمزيد من المعلومات، راجع نظرة عامة على Microsoft Graph PowerShell.

للحصول على معلومات حول كيفية استخدام أساليب مختلفة للمصادقة Connect-Graph في برنامج نصي غير مراقب، راجع المقالة Cmdlets الوحدة النمطية للمصادقة في Microsoft Graph PowerShell.

أولا، اتصل بمستأجر Microsoft 365.

يتطلب تعيين التراخيص للمستخدم وإزالتها نطاق الإذن User.ReadWrite.All أو أحد الأذونات الأخرى المدرجة في الصفحة المرجعية لواجهة برمجة تطبيقات 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 لفرنسا. لا تتوفر بعض خدمات 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

إذا كنت تستخدم Get-MgUser cmdlet دون استخدام المعلمة -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: assignLicense وواجهات برمجة تطبيقات subscribedSku