Ta bort Microsoft 365-licenser från användar konton med PowerShellRemove Microsoft 365 licenses from user accounts with PowerShell

Denna artikel gäller för både Microsoft 365 Enterprise och Office 365 Enterprise.This article applies to both Microsoft 365 Enterprise and Office 365 Enterprise.

Anteckning

Lär dig hur du tar bort licenser från användar konton med Microsoft 365 Admin Center.Learn how to remove licenses from user accounts with the Microsoft 365 admin center. En lista över ytterligare resurser finns i Hantera användare och grupper.For a list of additional resources, see Manage users and groups.

Använda Azure Active Directory PowerShell för diagramvynUse the Azure Active Directory PowerShell for Graph module

Börja med att ansluta till din Microsoft 365-klient organisation.First, connect to your Microsoft 365 tenant.

Sedan visar du licens abonnemang för klient organisationen med det här kommandot.Next, list the license plans for your tenant with this command.

Get-AzureADSubscribedSku | Select SkuPartNumber

Sedan hämtar du inloggnings namnet för det konto som du vill ta bort en licens för, även kallat UPN-namnet.Next, get the sign-in name of the account for which you want remove a license, also known as the user principal name (UPN).

Ange slutligen användar namn för inloggning och licens plan för att ta bort tecknen "<" och ">" och kör dessa kommandon.Finally, specify the user sign-in and license plan names, remove the "<" and ">" characters, and run these commands.

$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 visst användar konto anger du användarens inloggnings namn, tar bort tecknen "<" och ">" och kör dessa kommandon.To remove all of the licenses for a specific user account, specify the user sign-in name, remove the "<" and ">" characters, and run these commands.

$userUPN="<user sign-in name (UPN)>"
$licensePlanList = Get-AzureADSubscribedSku
$userList = Get-AzureADUser -ObjectID $userUPN | Select -ExpandProperty AssignedLicenses | Select SkuID
if($userList.Count -ne 0) {
if($userList -is [array]) {
for ($i=0; $i -lt $userList.Count; $i++) {
$license = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicense
$licenses = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicenses
$license.SkuId = $userList[$i].SkuId
$licenses.AddLicenses = $license
Set-AzureADUserLicense -ObjectId $userUPN -AssignedLicenses $licenses
$Licenses.AddLicenses = @()
$Licenses.RemoveLicenses =  (Get-AzureADSubscribedSku | Where-Object -Property SkuID -Value $userList[$i].SkuId -EQ).SkuID
Set-AzureADUserLicense -ObjectId $userUPN -AssignedLicenses $licenses
}
} else {
$license = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicense
$licenses = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicenses
$license.SkuId = $userList.SkuId
$licenses.AddLicenses = $license
Set-AzureADUserLicense -ObjectId $userUPN -AssignedLicenses $licenses
$Licenses.AddLicenses = @()
$Licenses.RemoveLicenses =  (Get-AzureADSubscribedSku | Where-Object -Property SkuID -Value $userList.SkuId -EQ).SkuID
Set-AzureADUserLicense -ObjectId $userUPN -AssignedLicenses $licenses
}}

Använda Microsoft Azure Active Directory-modulen för Windows PowerShellUse the Microsoft Azure Active Directory Module for Windows PowerShell

Börja med att ansluta till din Microsoft 365-klient organisation.First, connect to your Microsoft 365 tenant.

Information om hur du visarAccountSkuID-informationen i organisationen finns i följande avsnitt:To view the licensing plan (AccountSkuID) information in your organization, see the following topics:

Om du använder cmdleten Get-MsolUser utan att använda parametern -all returneras bara de första 500-kontona.If you use the Get-MsolUser cmdlet without using the -All parameter, only the first 500 accounts are returned.

Ta bort licenser från användar kontonRemoving licenses from user accounts

Om du vill ta bort licenser från ett befintligt användar konto använder du följande syntax:To remove licenses from an existing user account, use the following 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.PowerShell Core does not support the Microsoft Azure Active Directory Module for Windows PowerShell module and cmdlets with Msol in their name. Om du vill fortsätta använda dessa cmdlets måste du köra dem från Windows PowerShell.To continue using these cmdlets, you must run them from Windows PowerShell.

I det här exemplet tas licensen licens planen litwareinc: ENTERPRISEPACK (Office 365 Enterprise E3) bort från användar kontot BelindaN@litwareinc.com.This example removes the litwareinc:ENTERPRISEPACK (Office 365 Enterprise E3) license from the user account BelindaN@litwareinc.com.

Set-MsolUserLicense -UserPrincipalName belindan@litwareinc.com -RemoveLicenses "litwareinc:ENTERPRISEPACK"

Anteckning

Du kan inte använda Set-MsolUserLicense cmdleten för att koppla bort användare från avbrutna licenser.You cannot use the Set-MsolUserLicense cmdlet to unassign users from canceled licenses. Du måste göra detta individuellt för varje användar konto i Microsoft 365 Admin Center.You must do this individually for each user account in the Microsoft 365 admin center.

Använd någon av följande metoder för att ta bort alla licenser från en grupp med befintliga licensierade användare:To remove all licenses from a group of existing licensed users, use either of the following methods:

  • Filtrera konton baserat på ett befintligt konto-attribut Använd följande syntax:Filter the accounts based on an existing account attribute To do this, use the following 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ändar konton i USA.This example removes all licenses from all user accounts in the Sales department in the United States.

$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 över specifika konton för en viss licens Gör så här:Use a list of specific accounts for a specific license To do this, perform the following steps:
  1. Skapa och spara en textfil som innehåller ett konto på varje rad, så här:Create and save a text file that contains one account on each line like this:
akol@contoso.com
tjohnston@contoso.com
kakers@contoso.com
  1. Använd följande syntax:Use the following 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 för licens planen litwareinc: ENTERPRISEPACK (Office 365 Enterprise E3) bort från användar kontona i text filen c:\Mina Documents\Accounts.txt.This example removes the litwareinc:ENTERPRISEPACK (Office 365 Enterprise E3) license from the user accounts defined in the text file 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"
}

Använd följande syntax för att ta bort alla licenser från alla befintliga användar konton:To remove all licenses from all existing user accounts, use the following 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 genom att ta bort användar kontot.Another way to free up a license is by deleting the user account. Mer information finns i ta bort och återställa användar konton med PowerShell.For more information, see Delete and restore user accounts with PowerShell.

Se ävenSee also

Hantera Microsoft 365-användarkonton,-licenser och-grupper med PowerShellManage Microsoft 365 user accounts, licenses, and groups with PowerShell

Hantera Microsoft 365 med PowerShellManage Microsoft 365 with PowerShell

Börja använda PowerShell för Microsoft 365Getting started with PowerShell for Microsoft 365