PowerShell을 사용하여 사용자 계정에서 Microsoft 365 라이선스 제거

이 문서는 Microsoft 365 Enterprise와 Office 365 Enterprise에 모두 적용됩니다.

참고

Microsoft 365 관리 센터 사용하여 사용자 계정에서 라이선스를 제거하는 방법을 알아봅니다. 추가 리소스 목록은 사용자 및 그룹 관리를 참조하세요.

Microsoft Graph PowerShell SDK 사용

먼저 Microsoft 365 테넌트에 연결합니다.

사용자에 대한 라이선스를 할당하고 제거하려면 User.ReadWrite.All 권한 범위 또는 '라이선스 할당' Graph API 참조 페이지에 나열된 다른 권한 중 하나가 필요합니다.

테넌트에서 사용할 수 있는 라이선스를 읽으려면 Organization.Read.All 권한 범위가 필요합니다.

Connect-Graph -Scopes User.ReadWrite.All, Organization.Read.All

조직에서 라이선스 계획 정보를 보려면 다음 항목을 참조하세요.

사용자 계정에서 라이선스 제거

기존 사용자 계정에서 라이센스를 제거 하려면 다음 구문을 사용 합니다.

Set-MgUserLicense -UserId "<Account>" -RemoveLicenses @("<AccountSkuId1>") -AddLicenses @{}

이 예제 에서는 사용자 BelindaN@litwareinc.com SPE_E5(Microsoft 365 E5) 라이선스 계획을 제거합니다.

$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을 사용하여 사용자 계정 삭제 및 복원을 참조하세요.

Graph 모듈용 Azure Active Directory PowerShell 사용하기

Set-AzureADUserLicense cmdlet은 사용 중지될 예정입니다. 위에서 설명한 대로 스크립트를 Microsoft Graph SDK의 Set-MgUserLicense cmdlet으로 마이그레이션하세요. 자세한 내용은 Microsoft Graph 라이선스 관리 API에 액세스하려면 앱 마이그레이션을 참조하세요.

먼저 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
    }
}

Windows PowerShell용 Microsoft Azure Active Directory 모듈 사용하기

참고

Set-MsolUserLicense 및 New-MsolUser(-LicenseAssignment) cmdlet은 사용 중지될 예정입니다. 위에서 설명한 대로 스크립트를 Microsoft Graph SDK의 Set-MgUserLicense cmdlet으로 마이그레이션하세요. 자세한 내용은 Microsoft Graph 라이선스 관리 API에 액세스하려면 앱 마이그레이션을 참조하세요.

먼저 Microsoft 365 테넌트에 연결합니다.

라이센스 계획 (AccountSkuID) 조직에 대 한 정보는 다음 항목을 참조.

-All 매개 변수를 사용하지 않고 Get-MsolUser cmdlet을 사용하는 경우 처음 500개의 계정만 반환됩니다.

사용자 계정에서 라이선스 제거

기존 사용자 계정에서 라이센스를 제거 하려면 다음 구문을 사용 합니다.

Set-MsolUserLicense -UserPrincipalName <Account> -RemoveLicenses "<AccountSkuId1>", "<AccountSkuId2>"...

참고

PowerShell Core는 Windows PowerShell용 Microsoft Azure Active Directory 모듈 및 이름에 Msol 이 있는 cmdlet을 지원하지 않습니다. 이러한 cmdlet을 계속 사용하려면 Windows PowerShell에서 이를 실행해야 합니다.

이 예제에서는 사용자 계정 BelindaN@litwareinc.com litwareinc:ENTERPRISEPACK(Office 365 Enterprise E3) 라이선스를 제거합니다.

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

참고

cmdlet을 Set-MsolUserLicense 사용하여 취소된 라이선스에서 사용자를 할당 취소할 수 없습니다. 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
}
  • 특정 라이선스에 특정 계정 목록 사용 이렇게 하려면 다음 단계를 수행합니다.
  1. 만들고 다음과 같이 각 줄에 한 계정에 포함 된 텍스트 파일을 저장 합니다.
akol@contoso.com
tjohnston@contoso.com
kakers@contoso.com
  1. 다음 구문을 사용합니다.
$x=Get-Content "<FileNameAndPath>"
for ($i=0; $i -lt $x.Count; $i++)
{
Set-MsolUserLicense -UserPrincipalName $x[$i] -RemoveLicenses "<AccountSkuId1>","<AccountSkuId2>"...
}

다음은 텍스트 파일 C:\My Documents\Accounts.txt 정의된 사용자 계정에서 litwareinc:ENTERPRISEPACK(Office 365 Enterprise E3) 라이선스를 제거하는 예제입니다.

$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을 사용하여 사용자 계정 삭제 및 복원을 참조하세요.

참고 항목

PowerShell로 Microsoft 365 사용자 계정, 라이선스 및 그룹 관리

PowerShell로 Microsoft 365 관리

Microsoft 365 용 PowerShell 시작