إزالة تراخيص Microsoft 365 من حسابات المستخدمين باستخدام PowerShell
تنطبق هذه المقالة على كل من Microsoft 365 Enterprise و Office 365 Enterprise.
ملاحظة
تعرف على كيفية إزالة التراخيص من حسابات المستخدمين باستخدام مركز مسؤولي Microsoft 365. للحصول على قائمة بالموارد الإضافية، راجع إدارة المستخدمين والمجموعات.
استخدام Microsoft Graph PowerShell SDK
أولا، اتصل بمستأجر Microsoft 365.
يتطلب تعيين تراخيص لمستخدم وإزالتها نطاق أذونات User.ReadWrite.All أو أحد الأذونات الأخرى المدرجة في الصفحة المرجعية "تعيين ترخيص" Graph واجهة برمجة التطبيقات.
نطاق أذونات Organization.Read.All مطلوب لقراءة التراخيص المتوفرة في المستأجر.
Connect-Graph -Scopes User.ReadWrite.All, Organization.Read.All
لعرض معلومات خطة الترخيص في مؤسستك، راجع المواضيع التالية:
إزالة التراخيص من حسابات المستخدمين
لإزالة التراخيص من حساب مستخدم موجود، استخدم بناء الجملة التالي:
Set-MgUserLicense -UserId "<Account>" -RemoveLicenses @("<AccountSkuId1>") -AddLicenses @{}
يزيل هذا المثال خطة ترخيص SPE_E5 (Microsoft 365 E5) من BelindaN@litwareinc.com المستخدم:
$e5Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E5'
Set-MgUserLicense -UserId "belindan@litwareinc.com" -RemoveLicenses @($e5Sku.SkuId) -AddLicenses @{}
لإزالة كافة التراخيص من مجموعة من المستخدمين المرخصين الحاليين، استخدم بناء الجملة التالي:
$licensedUsers = Get-MgUser -Filter 'assignedLicenses/$count ne 0' `
-ConsistencyLevel eventual -CountVariable licensedUserCount -All `
-Select UserPrincipalName,DisplayName,AssignedLicenses
foreach($user in $licensedUsers)
{
$licencesToRemove = $user.AssignedLicenses | Select -ExpandProperty SkuId
$user = Set-MgUserLicense -UserId $user.UserPrincipalName -RemoveLicenses $licencesToRemove -AddLicenses @{}
}
هناك طريقة أخرى لتحرير ترخيص وهي حذف حساب المستخدم. لمزيد من المعلومات، راجع حذف حسابات المستخدمين واستعادتها باستخدام PowerShell.
استخدام Azure Active Directory PowerShell للوحدة النمطية Graph
من المقرر إيقاف Set-AzureADUserLicense cmdlet. الرجاء ترحيل البرامج النصية الخاصة بك إلى أمر cmdlet Set-MgUserLicense SDK ل Microsoft Graph كما هو موضح أعلاه. لمزيد من المعلومات، راجع ترحيل تطبيقاتك للوصول إلى واجهات برمجة تطبيقات إدارة التراخيص من Microsoft Graph.
أولا، اتصل بمستأجر Microsoft 365.
بعد ذلك، قم بإدراج خطط الترخيص للمستأجر باستخدام هذا الأمر.
Get-AzureADSubscribedSku | Select SkuPartNumber
بعد ذلك، احصل على اسم تسجيل الدخول للحساب الذي تريد إزالة ترخيص له، والمعروف أيضا باسم المستخدم الأساسي (UPN).
وأخيرا، حدد أسماء خطة تسجيل الدخول والترخيص للمستخدم، وقم بإزالة الأحرف "<" و">"، ثم قم بتشغيل هذه الأوامر.
$userUPN="<user sign-in name (UPN)>"
$planName="<license plan name from the list of license plans>"
$license = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicenses
$license.RemoveLicenses = (Get-AzureADSubscribedSku | Where-Object -Property SkuPartNumber -Value $planName -EQ).SkuID
Set-AzureADUserLicense -ObjectId $userUPN -AssignedLicenses $license
لإزالة كافة التراخيص لحساب مستخدم معين، حدد اسم تسجيل دخول المستخدم، وقم بإزالة الأحرف "<" و">"، ثم قم بتشغيل هذه الأوامر.
$userUPN="<user sign-in name (UPN)>"
$userList = Get-AzureADUser -ObjectID $userUPN
$Skus = $userList | Select -ExpandProperty AssignedLicenses | Select SkuID
if($userList.Count -ne 0) {
if($Skus -is [array])
{
$licenses = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicenses
for ($i=0; $i -lt $Skus.Count; $i++) {
$licenses.RemoveLicenses += (Get-AzureADSubscribedSku | Where-Object -Property SkuID -Value $Skus[$i].SkuId -EQ).SkuID
}
Set-AzureADUserLicense -ObjectId $userUPN -AssignedLicenses $licenses
} else {
$licenses = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicenses
$licenses.RemoveLicenses = (Get-AzureADSubscribedSku | Where-Object -Property SkuID -Value $Skus.SkuId -EQ).SkuID
Set-AzureADUserLicense -ObjectId $userUPN -AssignedLicenses $licenses
}
}
استخدام الوحدة النمطية Microsoft Azure Active Directory Windows PowerShell
ملاحظة
من المقرر إيقاف أوامر cmdlets Set-MsolUserLicense New-MsolUser (-LicenseAssignment). الرجاء ترحيل البرامج النصية الخاصة بك إلى أمر cmdlet Set-MgUserLicense SDK ل Microsoft Graph كما هو موضح أعلاه. لمزيد من المعلومات، راجع ترحيل تطبيقاتك للوصول إلى واجهات برمجة تطبيقات إدارة التراخيص من Microsoft Graph.
أولا، اتصل بمستأجر Microsoft 365.
لعرض معلومات خطة الترخيص (AccountSkuID) في مؤسستك، راجع المواضيع التالية:
إذا كنت تستخدم Get-MsolUser cmdlet دون استخدام المعلمة -All ، يتم إرجاع أول 500 حساب فقط.
إزالة التراخيص من حسابات المستخدمين
لإزالة التراخيص من حساب مستخدم موجود، استخدم بناء الجملة التالي:
Set-MsolUserLicense -UserPrincipalName <Account> -RemoveLicenses "<AccountSkuId1>", "<AccountSkuId2>"...
ملاحظة
لا يدعم PowerShell Core الوحدة النمطية Microsoft Azure Active Directory لوحدة Windows PowerShell و cmdlets مع Msol باسمها. لمتابعة استخدام أوامر cmdlets هذه، يجب تشغيلها من Windows PowerShell.
يزيل هذا المثال ترخيص litwareinc:ENTERPRISEPACK (Office 365 Enterprise E3) من حساب المستخدم BelindaN@litwareinc.com.
Set-MsolUserLicense -UserPrincipalName belindan@litwareinc.com -RemoveLicenses "litwareinc:ENTERPRISEPACK"
ملاحظة
لا يمكنك استخدام Set-MsolUserLicense cmdlet لإلغاء تعيين المستخدمين من التراخيص التي تم إلغاؤها . يجب القيام بذلك بشكل فردي لكل حساب مستخدم في مركز مسؤولي Microsoft 365.
لإزالة كافة التراخيص من مجموعة من المستخدمين المرخصين الحاليين، استخدم أيا من الأساليب التالية:
- تصفية الحسابات استنادا إلى سمة حساب موجودة للقيام بذلك، استخدم بناء الجملة التالي:
$userArray = Get-MsolUser -All <FilterableAttributes> | where {$_.isLicensed -eq $true}
for ($i=0; $i -lt $userArray.Count; $i++)
{
Set-MsolUserLicense -UserPrincipalName $userArray[$i].UserPrincipalName -RemoveLicenses $userArray[$i].licenses.accountskuid
}
يزيل هذا المثال كافة التراخيص من جميع حسابات المستخدمين في قسم المبيعات في الولايات المتحدة.
$userArray = Get-MsolUser -All -Department "Sales" -UsageLocation "US" | where {$_.isLicensed -eq $true}
for ($i=0; $i -lt $userArray.Count; $i++)
{
Set-MsolUserLicense -UserPrincipalName $userArray[$i].UserPrincipalName -RemoveLicenses $userArray[$i].licenses.accountskuid
}
- استخدام قائمة بحسابات معينة لترخيص معين للقيام بذلك، نفذ الخطوات التالية:
- إنشاء ملف نصي يحتوي على حساب واحد على كل سطر وحفظه كما يلي:
akol@contoso.com
tjohnston@contoso.com
kakers@contoso.com
- استخدم بناء الجملة التالي:
$x=Get-Content "<FileNameAndPath>"
for ($i=0; $i -lt $x.Count; $i++)
{
Set-MsolUserLicense -UserPrincipalName $x[$i] -RemoveLicenses "<AccountSkuId1>","<AccountSkuId2>"...
}
يزيل هذا المثال ترخيص litwareinc:ENTERPRISEPACK (Office 365 Enterprise E3) من حسابات المستخدمين المعرفة في الملف النصي C:\My Documents\Accounts.txt.
$x=Get-Content "C:\My Documents\Accounts.txt"
for ($i=0; $i -lt $x.Count; $i++)
{
Set-MsolUserLicense -UserPrincipalName $x[$i] -RemoveLicenses "litwareinc:ENTERPRISEPACK"
}
لإزالة كافة التراخيص من جميع حسابات المستخدمين الموجودة، استخدم بناء الجملة التالي:
$userArray = Get-MsolUser -All | where {$_.isLicensed -eq $true}
for ($i=0; $i -lt $userArray.Count; $i++)
{
Set-MsolUserLicense -UserPrincipalName $userArray[$i].UserPrincipalName -RemoveLicenses $userArray[$i].licenses.accountskuid
}
هناك طريقة أخرى لتحرير ترخيص وهي حذف حساب المستخدم. لمزيد من المعلومات، راجع حذف حسابات المستخدمين واستعادتها باستخدام PowerShell.
راجع أيضًا
إدارة حسابات المستخدمين والتراخيص والمجموعات Microsoft 365 باستخدام PowerShell
الملاحظات
إرسال الملاحظات وعرضها المتعلقة بـ