社畜の所業

社畜の所業

Microsoft365の機能について解説をしていきたいと思います。このブログの情報をご活用いただければ幸いです。たまに他の情報も取り入れていきたいと思います。

※このサイトはPR記事を含みます。

【Microsoft365参考書】特定のサービス プランが有効なユーザー情報を出力するには?

 

今回はライセンスに含まれている特定のサービスプランが有効なユーザーの情報を一覧として取得する方法についてご紹介したいと思います。

 

事前準備 : Windows PowerShell の起動と接続

 

下記公開情報の [1. Microsoft Graph PowerShell のインストール] を参考に、Microsoft Graph PowerShell 用モジュールのインストールをしてから実行してください。

※ すでに本モジュールのインストールが完了している場合、再インストールは不要ですので、後述の <Windows PowerShell への接続> の手順からご実施ください。

 

jpazureid.github.io

 

Windows PowerShell への接続

 

Microsoft Graph PowerShell 用モジュールのインストールが完了したら、以下の手順にて、Windows PowerShell へ接続してください。

 

1. Windows PowerShell を右クリックして [管理者として実行] で起動します。

 

2. 以下のコマンドレットを実行し、管理者ユーザーの ID とパスワードを入力します。

 

【コマンドレット】

Connect-MgGraph -Scopes "Organization.Read.All","User.ReadWrite.All"

 

3. 以下のコマンドレットを実行し、モジュールをインポートします。

 

【コマンドレット】

Import-Module -Name Microsoft.Graph.Users

 

 

テナントに紐づくライセンス情報を確認する

以下のコマンドレットを実行し、ご契約中のライセンスの SkuId を確認します。

 

【コマンドレット】

Get-MgSubscribedSku | ft Id, SkuId, SkuPartNumber -Wrap

 

出力例

Id                                                                        SkuId                                SkuPartNumber

--                                                                        -----                                --------

a818a9d9-4bf7-4316-b8bb-e0f1a52ce5ea_6fd2c87f-b296-42f0-b197-1e91e994b900 6fd2c87f-b296-42f0-b197-1e91e994b900 ENTERPRISEPACK

 

説明

・ 上記出力例は、[Office 365 E3/ENTERPRISEPACK] のライセンスのみを契約している場合の例です。

・ テナントにて複数のライセンスを所有している場合には所得しているすべてのライセンスが表示されます。

 

learn.microsoft.com

 

 

ライセンス内のサービスを確認する

以下のコマンドレットを実行し、ライセンスに含まれるサービス プランの情報を確認します。

 

【コマンドレット】

Get-MgSubscribedSku -SubscribedSkuId "<Get-MgSubscribedSku コマンドで確認した、サービス プランを確認したいライセンスの Id>" | Select-Object -ExpandProperty ServicePlans | ft ServicePlanId, ServicePlanName

 

【実行例】

Get-MgSubscribedSku -SubscribedSkuId "a818a9d9-4bf7-4316-b8bb-e0f1a52ce5ea_6fd2c87f-b296-42f0-b197-1e91e994b900" | Select-Object -ExpandProperty ServicePlans | ft ServicePlanId, ServicePlanName

 

説明

上記実行例では、[Office 365 E3] に含まれるサービスプランを確認してます。

 

 

特定のサービス プランが有効なユーザー情報を出力する

以下のコマンドレットを実行することで、特定のサービス プランが有効なユーザーを CSV ファイルに出力することが可能です。

 

ライセンスを指定するコマンドレット例

【コマンドレット】

$users | ForEach {$user = $_ ; Get-MgUserLicenseDetail -UserId $user.UserPrincipalName | Select-Object SkuPartNumber,SkuId -ExpandProperty ServicePlans | Select @{n="UserPrincipalName"; e={%{$user.UserPrincipalName}}}, SkuPartNumber,SkuId,ProvisioningStatus,ServicePlanId,ServicePlanName}|Where{($_.SkuId -eq "<対象ライセンスの skuId>") -and ($_.ServicePlanId -eq "<対象サービス プランの ServicePlanId>") -and ($_.ProvisioningStatus -ne "Disabled") } | Export-csv "<出力する CSV ファイル名>" -NoTypeInformation -Encoding UTF8

 

【実行例】

$users | ForEach {$user = $_ ; Get-MgUserLicenseDetail -UserId $user.UserPrincipalName | Select-Object SkuPartNumber,SkuId -ExpandProperty ServicePlans | Select @{n="UserPrincipalName"; e={%{$user.UserPrincipalName}}}, SkuPartNumber,SkuId,ProvisioningStatus,ServicePlanId,ServicePlanName}|Where{($_.SkuId -eq "6fd2c87f-b296-42f0-b197-1e91e994b900") -and ($_.ServicePlanId -eq "efb87545-963c-4e0d-99df-69c6916d9eb0") -and ($_.ProvisioningStatus -ne "Disabled") } | Export-csv "C:\temp\EXOUser.csv" -NoTypeInformation -Encoding UTF8

 

ライセンスを指定しないコマンドレット例

【コマンドレット】

$users | ForEach {$user = $_ ; Get-MgUserLicenseDetail -UserId $user.UserPrincipalName | Select-Object SkuPartNumber,SkuId -ExpandProperty ServicePlans | Select @{n="UserPrincipalName"; e={%{$user.UserPrincipalName}}}, SkuPartNumber,SkuId,ProvisioningStatus,ServicePlanId,ServicePlanName}|Where{($_.ServicePlanId -eq "<対象サービス プランの ServicePlanId>") -and ($_.ProvisioningStatus -ne "Disabled") } | Export-csv "<出力する CSV ファイル名>" -NoTypeInformation -Encoding UTF8

 

【実行例】

$users | ForEach {$user = $_ ; Get-MgUserLicenseDetail -UserId $user.UserPrincipalName | Select-Object SkuPartNumber,SkuId -ExpandProperty ServicePlans | Select @{n="UserPrincipalName"; e={%{$user.UserPrincipalName}}}, SkuPartNumber,SkuId,ProvisioningStatus,ServicePlanId,ServicePlanName}|Where{($_.ServicePlanId -eq "efb87545-963c-4e0d-99df-69c6916d9eb0") -and ($_.ProvisioningStatus -ne "Disabled") } | Export-csv "C:\temp\EXOUser.csv" -NoTypeInformation -Encoding UTF8

 

説明

・ 対象の全ユーザーを取得するには、 Get-MgUser のすぐ後ろに -All オプションを指定します。-All を指定しない場合は、100 ユーザーなど一部の結果のみが返されます。

PowerShell 7 を利用している場合、環境によって文字化けする可能性があります。出力されたファイルに文字化けが発生している場合は、コマンドレット内の [-Encoding UTF8] を [-Encoding UTF8BOM] に書き換えて実行し、文字化けの回避が可能かお試しください。