Fjerne Microsoft 365 lisenser fra brukerkontoer med PowerShell
Denne artikkelen gjelder for både Microsoft 365 Enterprise og Office 365 Enterprise.
Obs!
Lær hvordan du fjerner lisenser fra brukerkontoer med Administrasjonssenter for Microsoft 365. Hvis du vil ha en liste over flere ressurser, kan du se Administrere brukere og grupper.
Bruke Microsoft Graph PowerShell SDK
Først kobler du til Microsoft 365-leieren.
Tilordning og fjerning av lisenser for en bruker krever user.ReadWrite.All tillatelsesomfang eller én av de andre tillatelsene som er oppført på siden Tilordne lisens Graph API-referanse.
Tillatelsesomfanget Organization.Read.All kreves for å lese lisensene som er tilgjengelige i leieren.
Connect-Graph -Scopes User.ReadWrite.All, Organization.Read.All
Hvis du vil vise informasjon om lisensplanen i organisasjonen, kan du se følgende emner:
Fjerne lisenser fra brukerkontoer
Hvis du vil fjerne lisenser fra en eksisterende brukerkonto, bruker du følgende syntaks:
Set-MgUserLicense -UserId "<Account>" -RemoveLicenses @("<AccountSkuId1>") -AddLicenses @{}
Dette eksemplet fjerner SPE_E5 (Microsoft 365 E5) lisensplan fra brukerens BelindaN@litwareinc.com:
$e5Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E5'
Set-MgUserLicense -UserId "belindan@litwareinc.com" -RemoveLicenses @($e5Sku.SkuId) -AddLicenses @{}
Hvis du vil fjerne alle lisenser fra en gruppe med eksisterende lisensierte brukere, bruker du følgende syntaks:
$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 @{}
}
En annen måte å frigjøre en lisens på, er ved å slette brukerkontoen. Hvis du vil ha mer informasjon, kan du se Slette og gjenopprette brukerkontoer med PowerShell.
Bruk Azure Active Directory PowerShell for Graph-modulen
Cmdleten Set-AzureADUserLicense er planlagt å bli fjernet. Overfør skriptene til Microsoft Graph SDK-ens Set-MgUserLicense cmdlet, som beskrevet ovenfor. Hvis du vil ha mer informasjon, kan du se Overføre appene dine for å få tilgang til API-ene for lisensbehandling fra Microsoft Graph.
Først kobler du til Microsoft 365-leieren.
Deretter viser du lisensplanene for leieren med denne kommandoen.
Get-AzureADSubscribedSku | Select SkuPartNumber
Deretter får du påloggingsnavnet til kontoen du vil fjerne en lisens for, også kjent som brukerhovednavn (UPN).
Til slutt angir du navnene på brukerens påloggings- og lisensplan, fjerner tegnene «<» og «>», og kjører disse kommandoene.
$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
Hvis du vil fjerne alle lisensene for en bestemt brukerkonto, angir du påloggingsnavnet for brukeren, fjerner tegnene «<» og «>» og kjører disse kommandoene.
$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
}
}
Bruk Microsoft Azure Active Directory modulen for Windows PowerShell
Obs!
Cmdleter for Set-MsolUserLicense og New-MsolUser (-LicenseAssignment) er planlagt å trekkes tilbake. Overfør skriptene til Microsoft Graph SDK-ens Set-MgUserLicense cmdlet, som beskrevet ovenfor. Hvis du vil ha mer informasjon, kan du se Overføre appene dine for å få tilgang til API-ene for lisensbehandling fra Microsoft Graph.
Først kobler du til Microsoft 365-leieren.
Hvis du vil vise informasjon om lisensieringsplan (AccountSkuID) i organisasjonen, kan du se følgende emner:
Hvis du bruker Get-MsolUser cmdlet uten å bruke -All-parameteren , returneres bare de første 500 kontoene.
Fjerne lisenser fra brukerkontoer
Hvis du vil fjerne lisenser fra en eksisterende brukerkonto, bruker du følgende syntaks:
Set-MsolUserLicense -UserPrincipalName <Account> -RemoveLicenses "<AccountSkuId1>", "<AccountSkuId2>"...
Obs!
PowerShell Core støtter ikke Microsoft Azure Active Directory modulen for Windows PowerShell modulen og cmdleter med Msol i navnet. Hvis du vil fortsette å bruke disse cmdletene, må du kjøre dem fra Windows PowerShell.
Dette eksemplet fjerner litwareinc:ENTERPRISEPACK-lisensen (Office 365 Enterprise E3) fra brukerkontoen BelindaN@litwareinc.com.
Set-MsolUserLicense -UserPrincipalName belindan@litwareinc.com -RemoveLicenses "litwareinc:ENTERPRISEPACK"
Obs!
Du kan ikke bruke cmdleten Set-MsolUserLicense til å oppheve tilordningen av brukere fra avbrutte lisenser. Du må gjøre dette enkeltvis for hver brukerkonto i Administrasjonssenter for Microsoft 365.
Hvis du vil fjerne alle lisenser fra en gruppe med eksisterende lisensierte brukere, bruker du én av følgende metoder:
- Filtrere kontoene basert på et eksisterende kontoattributt Hvis du vil gjøre dette, bruker du følgende syntaks:
$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
}
Dette eksemplet fjerner alle lisenser fra alle brukerkontoer i salgsavdelingen 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
}
- Bruke en liste over bestemte kontoer for en bestemt lisens Hvis du vil gjøre dette, utfører du følgende trinn:
- Opprett og lagre en tekstfil som inneholder én konto på hver linje, slik:
akol@contoso.com
tjohnston@contoso.com
kakers@contoso.com
- Bruk følgende syntaks:
$x=Get-Content "<FileNameAndPath>"
for ($i=0; $i -lt $x.Count; $i++)
{
Set-MsolUserLicense -UserPrincipalName $x[$i] -RemoveLicenses "<AccountSkuId1>","<AccountSkuId2>"...
}
Dette eksemplet fjerner litwareinc:ENTERPRISEPACK-lisensen (Office 365 Enterprise E3) fra brukerkontoene som er definert i tekstfilen 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"
}
Hvis du vil fjerne alle lisenser fra alle eksisterende brukerkontoer, bruker du følgende syntaks:
$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
}
En annen måte å frigjøre en lisens på, er ved å slette brukerkontoen. Hvis du vil ha mer informasjon, kan du se Slette og gjenopprette brukerkontoer med PowerShell.
Se også
Administrere Microsoft 365 brukerkontoer, lisenser og grupper med PowerShell