PowerShell을 통해 사용자 계정에 Microsoft 365 라이선스 할당Assign Microsoft 365 licenses to user accounts with PowerShell

이 문서는 Microsoft 365 Enterprise와 Office 365 Enterprise에 모두 적용됩니다.This article applies to both Microsoft 365 Enterprise and Office 365 Enterprise.

사용자는 계정에 라이선스 계획의 라이선스가 할당될 때까지 Microsoft 365 서비스를 사용할 수 없습니다.Users can't use any Microsoft 365 services until their account has been assigned a license from a licensing plan. PowerShell을 사용하여 라이선스가 없는 계정에 라이선스를 신속하게 할당할 수 있습니다.You can use PowerShell to quickly assign licenses to unlicensed accounts.

먼저 사용자 계정에 위치를 할당해야 합니다.User accounts must first be assigned a location. 위치를 지정하는 것은 Microsoft 365관리 센터에서 새 사용자 계정을 만드는 데 필요한 부분입니다.Specifying a location is a required part of creating a new user account in the Microsoft 365 admin center.

기본적으로는 사내 Active Directory 도메인 서비스에서 동기화된 계정의 위치가 지정되어 있지 않습니다.Accounts synchronized from your on-premises Active Directory Domain Services do not by default have a location specified. 다음에서 이러한 계정의 위치를 구성할 수 있습니다.You can configure a location for these accounts from:

  • Microsoft 365 관리 센터The Microsoft 365 admin center
  • PowerShellPowerShell
  • Azure Portal(Active Directory > Users > 사용자 계정> 연락처 정보 국가 > > 또는 지역)입니다.The Azure portal (Active Directory > Users > user account > Profile > Contact info > Country or region).

참고

Microsoft 365 관리 센터를 통해 사용자 계정에 라이선스를 할당하는 방법을 학습합니다.Learn how to assign licenses to user accounts with the Microsoft 365 admin center. 추가 리소스 목록은 사용자 및 그룹 관리를 참조하세요.For a list of additional resources, see Manage users and groups.

Graph 모듈용 Azure Active Directory PowerShell 사용하기Use the Azure Active Directory PowerShell for Graph module

먼저 Microsoft 365 테넌트에 연결합니다.First, connect to your Microsoft 365 tenant.

다음으로, 이 명령을 사용하여 테넌트에 대한 라이선스 계획을 나열합니다.Next, list the license plans for your tenant with this command.

Get-AzureADSubscribedSku | Select SkuPartNumber

그런 다음 라이선스를 추가할 계정의 로그인 이름을 UPN(사용자 계정 이름)이라고도 합니다.Next, get the sign-in name of the account to which you want add a license, also known as the user principal name (UPN).

그런 다음 사용자 계정에 사용 위치가 할당되어 있도록 합니다.Next, ensure that the user account has a usage location assigned.

Get-AzureADUser -ObjectID <user sign-in name (UPN)> | Select DisplayName, UsageLocation

할당된 사용 위치가 없는 경우 다음 명령을 사용하여 할당할 수 있습니다.If there is no usage location assigned, you can assign one with these commands:

$userUPN="<user sign-in name (UPN)>"
$userLoc="<ISO 3166-1 alpha-2 country code>"
Set-AzureADUser -ObjectID $userUPN -UsageLocation $userLoc

마지막으로 사용자 로그인 이름 및 라이선스 계획 이름을 지정하고 다음 명령을 실행합니다.Finally, specify the user sign-in name and license plan name 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.AssignedLicense
$License.SkuId = (Get-AzureADSubscribedSku | Where-Object -Property SkuPartNumber -Value $planName -EQ).SkuID
$LicensesToAssign = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicenses
$LicensesToAssign.AddLicenses = $License
Set-AzureADUserLicense -ObjectId $userUPN -AssignedLicenses $LicensesToAssign

Windows PowerShell용 Microsoft Azure Active Directory 모듈 사용하기Use the Microsoft Azure Active Directory Module for Windows PowerShell

먼저 Microsoft 365 테넌트에 연결합니다.First, connect to your Microsoft 365 tenant.

명령을 실행하여 조직의 각 계획에서 사용 가능한 라이선스 계획 및 사용 가능한 라이선스 수를 Get-MsolAccountSku 볼 수 있습니다.Run the Get-MsolAccountSku command to view the available licensing plans and the number of available licenses in each plan in your organization. 각 계획에서 사용 가능한 라이선스 수는 ActiveUnits - WarningUnits - ConsumedUnits입니다.The number of available licenses in each plan is ActiveUnits - WarningUnits - ConsumedUnits. 라이선스 계획, 라이선스 및 서비스에 대한 자세한 내용은 PowerShell을 통해 라이선스 및 서비스 보기를 참조하세요.For more information about licensing plans, licenses, and services, see View licenses and services with PowerShell.

참고

PowerShell Core는 Windows PowerShell용 Microsoft Azure Active Directory 모듈 및 이름에 Msol 이 있는 cmdlet을 지원하지 않습니다.PowerShell Core does not support the Microsoft Azure Active Directory Module for Windows PowerShell module and cmdlets with Msol in their name. 이러한 cmdlet을 계속 사용하려면 Windows PowerShell에서 이를 실행해야 합니다.To continue using these cmdlets, you must run them from Windows PowerShell.

조직에서 라이선스가 없는 계정을 찾으면 이 명령을 실행합니다.To find the unlicensed accounts in your organization, run this command.

Get-MsolUser -All -UnlicensedUsersOnly

UsageLocation 속성이 유효한 ISO 3166-1 alpha-2 국가 코드로 설정된 사용자 계정에만 라이선스를 할당할 수 있습니다.You can only assign licenses to user accounts that have the UsageLocation property set to a valid ISO 3166-1 alpha-2 country code. 예를 들어 미국은 미국, 프랑스의 경우 FR입니다.For example, US for the United States, and FR for France. 일부 Microsoft 365 서비스는 특정 국가에서는 사용할 수 없습니다.Some Microsoft 365 services aren't available in certain countries. 자세한 내용은 라이선스 제한 정보를 참조하세요.For more information, see About license restrictions.

UsageLocation 값이 없는 계정을 찾으면 이 명령을 실행합니다.To find accounts that don't have a UsageLocation value, run this command.

Get-MsolUser -All | where {$_.UsageLocation -eq $null}

계정에 UsageLocation 값을 설정하려면 이 명령을 실행합니다.To set the UsageLocation value on an account, run this command.

Set-MsolUser -UserPrincipalName "<Account>" -UsageLocation <CountryCode>

예를 들어 다음과 같습니다.For example:

Set-MsolUser -UserPrincipalName "belindan@litwareinc.com" -UsageLocation US

-All 매개 변수를 사용하지 않고 Get-MsolUser cmdlet을 사용하는 경우 처음 500개의 계정만 반환됩니다.If you use the Get-MsolUser cmdlet without using the -All parameter, only the first 500 accounts are returned.

사용자 계정에 라이선스 할당Assigning licenses to user accounts

사용자에게 라이선스를 할당하기 위해 PowerShell에서 다음 명령을 사용 합니다.To assign a license to a user, use the following command in PowerShell.

Set-MsolUserLicense -UserPrincipalName "<Account>" -AddLicenses "<AccountSkuId>"

이 예에서는 litwareinc:ENTERPRISEPACK(Office 365 Enterprise E3) 라이선스 계획의 라이선스를 라이선스가 허가되지 않은 사용자 belindan에 @ litwareinc.com.This example assigns a license from the litwareinc:ENTERPRISEPACK (Office 365 Enterprise E3) licensing plan to the unlicensed user belindan@litwareinc.com:

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

라이선스가 없는 모든 사용자에게 라이선스를 할당하기 위해 이 명령을 실행합니다.To assign a license to all unlicensed users, run this command.

Get-MsolUser -All -UnlicensedUsersOnly [<FilterableAttributes>] | Set-MsolUserLicense -AddLicenses "<AccountSkuId>"

참고

동일한 라이센스 제도에서 여러 라이센스 사용자 지정할 수 없습니다.You can't assign multiple licenses to a user from the same licensing plan. 반환 하는 순서 대로 사용자에 게 라이선스 할당 된 충분 한 사용 가능한 라이센스를 설정 하지 않은 경우는 Get-MsolUser cmdlet 사용 가능한 라이센스가 실행 될 때까지.If you don't have enough available licenses, the licenses are assigned to users in the order that they're returned by the Get-MsolUser cmdlet until the available licenses run out.

이 예에서는 라이선스가 없는 모든 사용자에게 litwareinc:ENTERPRISEPACK(Office 365 Enterprise E3) 라이선스 계획의 라이선스를 할당합니다.This example assigns licenses from the litwareinc:ENTERPRISEPACK (Office 365 Enterprise E3) licensing plan to all unlicensed users:

Get-MsolUser -All -UnlicensedUsersOnly | Set-MsolUserLicense -AddLicenses "litwareinc:ENTERPRISEPACK"

이 예에서는 미국 판매 부서의 허가되지 않은 사용자에게 동일한 라이선스를 할당합니다.This example assigns those same licenses to unlicensed users in the Sales department in the United States:

Get-MsolUser -All -Department "Sales" -UsageLocation "US" -UnlicensedUsersOnly | Set-MsolUserLicense -AddLicenses "litwareinc:ENTERPRISEPACK"

Azure Active Directory PowerShell for Graph 모듈을 사용하여 사용자를 다른 구독(라이선스 계획)으로 이동Move a user to a different subscription (license plan) with the Azure Active Directory PowerShell for Graph module

먼저 Microsoft 365 테넌트에 연결합니다.First, connect to your Microsoft 365 tenant.

그런 다음 구독을 전환할 사용자 계정의 로그인 이름을 UPN(사용자 계정 이름)이라고도 합니다.Next, get the sign-in name of the user account for which you want switch subscriptions, also known as the user principal name (UPN).

다음으로 이 명령을 사용하여 테넌트의 구독(라이선스 계획)을 나열합니다.Next, list the subscriptions (license plans) for your tenant with this command.

Get-AzureADSubscribedSku | Select SkuPartNumber

다음으로 사용자 계정이 현재 있는 구독을 다음 명령을 사용하여 나열합니다.Next, list the subscriptions that the user account currently has with these commands.

$userUPN="<user account UPN>"
$licensePlanList = Get-AzureADSubscribedSku
$userList = Get-AzureADUser -ObjectID $userUPN | Select -ExpandProperty AssignedLicenses | Select SkuID 
$userList | ForEach { $sku=$_.SkuId ; $licensePlanList | ForEach { If ( $sku -eq $_.ObjectId.substring($_.ObjectId.length - 36, 36) ) { Write-Host $_.SkuPartNumber } } }

사용자가 현재 있는 구독(FROM 구독) 및 사용자가 이동 중인 구독(TO 구독)을 식별합니다.Identify the subscription the user currently has (the FROM subscription) and the subscription to which the user is moving (the TO subscription).

마지막으로 TO 및 FROM 구독 이름(SKU 부분 번호)을 지정하고 다음 명령을 실행합니다.Finally, specify the TO and FROM subscription names (SKU part numbers) and run these commands.

$subscriptionFrom="<SKU part number of the current subscription>"
$subscriptionTo="<SKU part number of the new subscription>"
# Unassign
$license = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicense
$licenses = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicenses
$license.SkuId = (Get-AzureADSubscribedSku | Where-Object -Property SkuPartNumber -Value $subscriptionFrom -EQ).SkuID
$licenses.AddLicenses = $license
Set-AzureADUserLicense -ObjectId $userUPN -AssignedLicenses $licenses
$licenses.AddLicenses = @()
$licenses.RemoveLicenses =  (Get-AzureADSubscribedSku | Where-Object -Property SkuPartNumber -Value $subscriptionFrom -EQ).SkuID
Set-AzureADUserLicense -ObjectId $userUPN -AssignedLicenses $licenses
# Assign
$license.SkuId = (Get-AzureADSubscribedSku | Where-Object -Property SkuPartNumber -Value $subscriptionTo -EQ).SkuID
$licenses = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicenses
$licenses.AddLicenses = $License
Set-AzureADUserLicense -ObjectId $userUPN -AssignedLicenses $licenses

다음 명령을 사용하여 사용자 계정의 구독 변경을 확인할 수 있습니다.You can verify the change in subscription for the user account with these commands.

$licensePlanList = Get-AzureADSubscribedSku
$userList = Get-AzureADUser -ObjectID $userUPN | Select -ExpandProperty AssignedLicenses | Select SkuID 
$userList | ForEach { $sku=$_.SkuId ; $licensePlanList | ForEach { If ( $sku -eq $_.ObjectId.substring($_.ObjectId.length - 36, 36) ) { Write-Host $_.SkuPartNumber } } }

참고 항목See also

PowerShell로 Microsoft 365 사용자 계정, 라이선스 및 그룹 관리Manage user accounts, licenses, and groups with PowerShell

PowerShell로 Microsoft 365 관리Manage Microsoft 365 with PowerShell

Microsoft 365 용 PowerShell 시작Getting started with PowerShell for Microsoft 365