Microsoft 365 PowerShell でライセンスを見るためには

先日説明した Bing Chat Enterprise の SKU をチェックした方法ですが、最近 Microsoft Graph の PowerShell SDK を利用していなかったこともありどのようにアクセスするか忘れていました。

そんな忘れっぽい人は私くらいかもしれませんが、 PowerShell を用いて Microsoft 365 の情報にアクセスしたい人は私以外にもいるはず! ということで、今回は PowerShellMicrosoft 365 にアクセスする方法を見ていきたいと思います。

過去に何度か紹介したかもしれませんが、おさらいということで。

まず行うことはリモート実行のポリシー設定です。

以下コマンドレットで現在のユーザーに対し、リモートサインを有効化します。

続いて Microsoft.Graph SDK のインストールです。これもカレントユーザーにスコープを設定することで自分以外に影響を与えないように設定可能です。

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Install-Module Microsoft.Graph -Scope CurrentUser

一度インストールしたことがあるなら、アップデートコマンドレットも活用するとよいでしょう。

Update-Module Microsoft.Graph

これらを行った後はまず Graph API に接続を行います。

こちらもスコープを設定すると行えることを最小化できるので、意識しておくとよいと思います。以下はユーザーについて読み書き、組織について読み込みができる設定です。サインインしていればそのまま継続できますし、サインインしていなければ別画面でサインインダイアログが表示されます。

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

次に以下コマンドレットを打ってみましょう。

これは自身のテナントに存在している SKU を一覧表示するものとなっています。この中身を見ることで Bing Chat Enterprise が見えたというわけです。

Get-MgSubscribedSku | select SkuPartNumber

では最後にそのライセンスがユーザーにどのような形でついているか見ておくコマンドレットを見てみましょう。

ちょっと長くなるのですが以下でユーザーに関する情報を見ることができます。

ユーザーの SKU 一覧をとり、その中にある有効な ServicePlan を一覧表示しているという流れですね。

$userUPN="ユーザーの UPN "

$allLicenses = Get-MgUserLicenseDetail -UserId $userUPN -Property SkuPartNumber, ServicePlans

$allLicenses | ForEach-Object {
    Write-Host "License:" $_.SkuPartNumber
    $_.ServicePlans | ForEach-Object {$_}
}

PowerShell コマンドレットはちょっと覚えれば簡単な構文で様々なことができるため、 Microsoft 365 を利用している人はぜひ覚えておくことをお薦めします。

今回は接続が中心でしたが、 SharePoint にデータをアップロードするなんて芸当もできるので、活用法は無限大です。

音楽:神秘の王宮