Ta Microsoft 365 licenser från användarkonton med PowerShell
Denna artikel gäller för både Microsoft 365 Enterprise och Office 365 Enterprise.
Anteckning
Lär dig hur du tar bort licenser från användarkonton med Administrationscenter för Microsoft 365. En lista över ytterligare resurser finns i Hantera användare och grupper.
Använda modulen Azure Active Directory PowerShell för Graph powershell
Börja med att ansluta till Microsoft 365 klientorganisation.
Lista sedan licensplaner för din klientorganisation med det här kommandot.
Get-AzureADSubscribedSku | Select SkuPartNumber
Hämta sedan inloggningsnamnet för det konto för vilket du vill ta bort en licens, även kallat användarens huvudnamn (UPN).
Slutligen anger du namnen på användarens inloggnings- och licensabonnemang, tar bort tecknen "<" och ">" och kör dessa kommandon.
$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
Om du vill ta bort alla licenser för ett specifikt användarkonto anger du användarens inloggningsnamn, tar bort tecknen "<" och ">" och kör kommandona.
$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
}
}
Använda Microsoft Azure Active Directory för Windows PowerShell
Börja med att ansluta till Microsoft 365 klientorganisation.
Information om hur du visar licensplanen (AccountSkuID) i organisationen finns i följande avsnitt:
Om du använder cmdleten Get-MsolUser utan att använda parametern -All returneras bara de första 500 kontona.
Ta bort licenser från användarkonton
Om du vill ta bort licenser från ett befintligt användarkonto ska du använda följande syntax:
Set-MsolUserLicense -UserPrincipalName <Account> -RemoveLicenses "<AccountSkuId1>", "<AccountSkuId2>"...
Anteckning
PowerShell Core stöder inte Microsoft Azure Active Directory-modul för Windows PowerShell-modulen och-cmdlets med MSOL i namnet. Om du vill fortsätta använda dessa cmdlets måste du köra dem från Windows PowerShell.
I det här exemplet tas licensen litwareinc:ENTERPRISEPACK (Office 365 Enterprise E3) bort från användarkontot BelindaN@litwareinc.com.
Set-MsolUserLicense -UserPrincipalName belindan@litwareinc.com -RemoveLicenses "litwareinc:ENTERPRISEPACK"
Anteckning
Du kan inte använda Set-MsolUserLicense cmdleten för att ta bort licenser för användare som inte tilldelats. Du måste göra det var för sig för varje användarkonto i Administrationscenter för Microsoft 365.
Om du vill ta bort alla licenser från en grupp befintliga licensierade användare använder du någon av följande metoder:
- Filtrera kontona baserat på ett befintligt kontoattribut Det gör du genom att använda följande syntax:
$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
}
I det här exemplet tas alla licenser bort från alla användarkonton i försäljningsavdelningen i USA.
$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
}
- Använda en lista med specifika konton för en viss licens Gör så här:
- Skapa och spara en textfil som innehåller ett konto på varje rad så här:
akol@contoso.com
tjohnston@contoso.com
kakers@contoso.com
- Använd följande syntax:
$x=Get-Content "<FileNameAndPath>"
for ($i=0; $i -lt $x.Count; $i++)
{
Set-MsolUserLicense -UserPrincipalName $x[$i] -RemoveLicenses "<AccountSkuId1>","<AccountSkuId2>"...
}
I det här exemplet tas licensen litwareinc:ENTERPRISEPACK (Office 365 Enterprise E3) bort från de användarkonton som är definierade i textfilen 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"
}
Om du vill ta bort alla licenser från alla befintliga användarkonton använder du följande syntax:
$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
}
Ett annat sätt att frigöra en licens är att ta bort användarkontot. Mer information finns i Ta bort och återställa användarkonton med PowerShell.
Se även
Hantera Microsoft 365-användarkonton,-licenser och-grupper med PowerShell