Microsoft Graph PowerShell SDK Preview

PowerShell 向けの Microsoft Graph のモジュールがプレビュー提供されています。PowerShell から Microsoft Graph を使用するためのラッパーのようなモジュールになっています。以前は PowerShell Gallery にも登録されていない状態でしたが、現時点では PowerShell Gallery に登録されたので、比較的容易に試すことができるようになりました。

https://github.com/microsoftgraph/msgraph-sdk-powershell

とはいえまっだプレビュー版なので、利用は自己責任でとなります。利用する Microsoft Graph のエンドポイントも /beta になっています。サポートも受けられないので何かあれば GitHub で自分で Issue をあげる必要があります。

なおこちらでも議論されていますが、環境によってはモジュールのインストールに失敗します。私の環境ではシステム ロケールを普段使っている「日本語 (日本)」から「英語 (米国)」に変えたところ、インストールが成功する環境がありました。

ただ、英語に変えた環境ではなぜか依存関係にあるモジュールがシステム フォルダーの方に配置されてしまい、PowerShell を管理者権限で起動しないと利用できないということが起きたので、注意が必要です。

無事インストールが終わったら、まずは Connect-Graph コマンドでアクセス トークンを取得します。必要な権限を Scopes に指定して実行します。例えばユーザーの一覧と、自分のメールと予定を取得したいのであれば、以下のような感じになります。

Connect-Graph -Scopes "User.ReadBasic.All","Mail.Read","Calendars.Read"

指示通りに認証を済ませたら PowerShell コマンドで Microsoft Graph とのやり取りができます。ユーザーの一覧を取得したいなら以下です。

Get-MgUser

自分のメールを取得したいなら以下です。

Get-MgUserMessage -UserId User01@contoso.com

予定を取得したいなら以下です。(現時点では CalendarView を取得する Get-MgUserCalendarView はうまく動かないようです。)

Get-MgUserEvent -UserId User01@contoso.com

通信内容が気になったら、Fiddler で見ることができます。

アプリケーションの権限はまだ試していないですが、Client Secret ではなく証明書が必要になるようです。

正直、いまのところ Messaging の観点からはあまり便利そうな気はしません。単にコマンドひとつで済ませられるような処理をするには簡単でよいのかもしれませんが、そういった処理はなかなかないですし、そもそも PowerShell には Invoke-RestMethod があるのでもっと自由に Microsoft Graph を操作できます。正式リリースされるときにはもっと魅力的な何かが追加されているといいのですが。