今回は、ライセンスに含まれている特定のサービスが有効なユーザーを一覧として取得する方法をご紹介したいと思います。
例えば、ExchangeOnlineが有効なユーザーやSharePointOnlineが有効なユーザーを確認する場合にご利用いただくことができます。
Windows PowerShell の接続
Windows PowerShell を管理者として起動し、接続のため以下のコマンドレットを実行し、管理者ユーザーの ID とパスワードを入力します。
【コマンドレット】
Connect-MsolService
対象サービスの ServiceName (サービス名)の確認
1. 以下のコマンドレットを実行して、ご契約のライセンスの SkuPartNumber を取得します。
【コマンドレット】
Get-MsolAccountSku | Format-Table AccountSkuId,SkuPartNumber
【実行結果例】
AccountSkuId SkuPartNumber
------------ -------------
*****:ENTERPRISEPACK ENTERPRISEPACK
※ [Office 365 Enterprise E3] の場合は、[ENTERPRISEPACK] と表示されます。
【留意事項】
・ 出力例の AccountSkuId や SkuPartNumber は、ご契約状況により表記が異なる可能性がございます。
・ 上記の値は、予告なく変更される場合がありますので、都度ご確認いただけますようお願い申し上げます。
2. 上記で確認した SkuPartNumber を使用し、以下のコマンドレットを実行して、対象サービスの ServiceName を取得します。
【コマンドレット】
Get-MsolAccountSku | where {$_.SkuPartNumber -eq "<確認した SkuPartNumber の値>"} | foreach {$_.ServiceStatus} | foreach {$_.Serviceplan} | select servicename
【実行例】※ Office 365 Enterprise E3 内のサービス内容を調べる場合の実行例です。
Get-MsolAccountSku | where {$_.SkuPartNumber -eq "ENTERPRISEPACK"} | foreach {$_.ServiceStatus} | foreach {$_.Serviceplan} | select servicename
【出力例】
ServiceName
-----------
STREAM_O365_E3 Microsoft Stream for O365 E3 SKU
Deskless Microsoft StaffHub
FLOW_O365_P2 Flow for Office 365
POWERAPPS_O365_P2 PowerApps for Office 365
TEAMS1 Microsoft Teams
PROJECTWORKMANAGEMENT Microsoft Planner
SWAY Sway
INTUNE_O365 Mobile Device Management for Office 365
YAMMER_ENTERPRISE Yammer Enterprise
RMS_S_ENTERPRISE Azure Rights Management
OFFICESUBSCRIPTION Office 365 ProPlus
MCOSTANDARD Skype for Business Online (プラン 2)
SHAREPOINTWAC Office Online
SHAREPOINTENTERPRISE SharePoint Online (プラン 2)
EXCHANGE_S_ENTERPRISE Exchange Online (プラン 2)
【説明】
・ 実行例は、E3 に含まれるサービスの一覧を出力する場合の例です。
・ Exchange Online (プラン 2) は [EXCHANGE_S_ENTERPRISE] と表示されます。
【留意事項】
・ ServiceName は、予告なく変更される場合がありますので、都度ご確認いただけますようお願い申し上げます。
特定のサービスが有効になっているユーザーの出力
以下のコマンドレットを実行して、指定したサービスが有効になっている、すべてのユーザーの情報を CSV ファイルに出力します。
【コマンドレット】
$skuList = @(); Get-MsolUser -All | % {$upn = $_.UserPrincipalName; $dpn =$_.DisplayName; $_.Licenses | % {$sku = $_.AccountSkuId; $_.ServiceStatus | ForEach-Object { $skuList += @{UserPrincipalName = $upn; DisplayName = $dpn; AccountSkuId = $sku; ServiceName = $_.ServicePlan.ServiceName; ProvisioningStatus = $_.ProvisioningStatus;} } } }; $skuList | Select-Object @{n="UserPrincipalName"; e={$_.UserPrincipalName}}, @{n="DisplayName"; e={$_.DisplayName}}, @{n="AccountSkuId"; e={$_.AccountSkuId}}, @{n="ServiceName"; e={$_.ServiceName}}, @{n="ProvisioningStatus"; e={$_.ProvisioningStatus}} | Where-Object {$_.ServiceName -eq "<対象サービスのServiceName>" -and $_.ProvisioningStatus -ne "Disabled"}
【実行例】
$skuList = @(); Get-MsolUser -All | % {$upn = $_.UserPrincipalName; $dpn =$_.DisplayName; $_.Licenses | % {$sku = $_.AccountSkuId; $_.ServiceStatus | ForEach-Object { $skuList += @{UserPrincipalName = $upn; DisplayName = $dpn; AccountSkuId = $sku; ServiceName = $_.ServicePlan.ServiceName; ProvisioningStatus = $_.ProvisioningStatus;} } } }; $skuList | Select-Object @{n="UserPrincipalName"; e={$_.UserPrincipalName}}, @{n="DisplayName"; e={$_.DisplayName}}, @{n="AccountSkuId"; e={$_.AccountSkuId}}, @{n="ServiceName"; e={$_.ServiceName}}, @{n="ProvisioningStatus"; e={$_.ProvisioningStatus}} | Where-Object {$_.ServiceName -eq "EXCHANGE_S_ENTERPRISE" -and $_.ProvisioningStatus -ne "Disabled"}
【説明】
・ 実行例は、テナント内の Exchange Online (プラン 2) が有効になっているすべてのユーザーを出力する場合の例です。
・ 上記条件のユーザーがテナント内に存在しない場合は、結果の出力は行われません。
・ 以下のような出力が行われた場合は、当該ユーザーに付与されているライセンス内の、Exchange Online (プラン 2) が有効になっております。
【出力例】
UserPrincipalName : user@contoso.onmicrosoft.com
DisplayName : User
AccountSkuId : contoso::ENTERPRISEPACK
ServiceName : EXCHANGE_S_ENTERPRISE
ProvisioningStatus : Success
【補足事項】
◆ [ProvisioningStatus (認証状態)] について
[PendingProvisioning] … ライセンスが準備中の状態
[PendingActivation] … ライセンス認証待ち状態
[PendingInput] … ライセンスが付与されている状態で、そのサービスを使用するための準備が完了していない状態
Office 365 上で [オン] になっている状態
[Success] … ライセンスが有効となっている状態
Office 365 上で [オン] になっている状態
[Disabled] … ライセンスが無効となっている状態
Office 365 上で [オフ] になっている状態