Microsoft Graph PowerShell SDK モジュールの制限環境でのインストール

Microsoft365

Microsoft365の各種アカウント管理を行う上で重宝していたAzure AD PowerShell モジュール や MSOnline Powershell モジュールですが、今後はMicrosoft Graph PowerShell SDK(以下Graph SDK)への移行が進行中です。

すでにライセンス管理についてはGraph SDKに統合されており、「Set-AzureADUserLicense」「Set-MsolUserLicense」といったコマンドレットはサポート終了となりました。

Graph SDKは多くのサブモジュールで構成されており、今後はこのGraph SDKのサブモジュールを充実させていくことで更なる統合を図っていくものと思われます。

これまで統一感のなかったMicrosoft365のPowerShellモジュール群ですが、サービスの拡大に合わせてようやく整理整頓されるようなので、これからは仕様変更の頻度が安定することを期待しています。

さて、今回はそんなGraph SDKの管理用パソコンへのインストール方法をご紹介したいのですが、企業のセキュリティポリシーにより制限がかかっており、インストールコマンドが通らないケースもあるかと思いますので、その辺りにも触れていきます(私の会社ではそうでした)。

Graph SDKのインストール

早速ですが、Graph SDKのインストールについて手順を解説していきます。

事前確認

Graph SDKをインストールする前に事前確認を行っておきましょう。
確認すべき事項は2点です。

まずはインターネット接続を確認しましょう。
当たり前ですがGraph SDKのコマンドレットの実行はインターネット接続がなければ行えません。

続いてPowerShellの実行ポリシーの確認です。
お使いOSの種類や企業のポリシーなどにより、デフォルトで厳しめのセキュリティ設定が施されているかもしれません。

管理者実行したPowerShellで以下のコマンドを発行し、現状のPowerShell実行ポリシーを確認します。

Get-ExecutionPolicy

実行ポリシーが「Restricted」だった場合、インストール時にエラーとなります。
以下のコマンドで実行ポリシーを「RemoteSigned」に変更します。

Set-ExecutionPolicy RemoteSigned

セキュリティの設定を緩めることになりますので、その仕様を確認しておきましょう。

実行ポリシー「RemoteSigned」とは
  • Windows サーバー コンピューターの既定の実行ポリシー。
  • スクリプトを実行できます。
  • 電子メールやインスタント メッセージング プログラムを含む、インターネットからダウンロードされるスクリプトと構成ファイルで、信頼できる発行元からのデジタル署名が必要です。
  • ローカル コンピューターに書き込まれ、インターネットからダウンロードされないスクリプトではデジタル署名は必要ありません。
  • コマンドレットを使用するなどしてスクリプトのブロックが解除されている場合は、インターネットからダウンロードされ、署名されていないスクリプトを Unblock-File 実行します。
  • インターネット以外のソースから署名されていないスクリプトを実行し、悪意のある可能性のある署名済みスクリプトを実行するリスクがあります。

引用:実行ポリシーについて – PowerShell | Microsoft Learn

インターネット経由でのインストール

まずはインターネット経由でのインストールを試みます。
管理者実行したPowerShellで以下のコマンドを発行し、Graph SDKをインストールします。

Install-Module Microsoft.Graph

NuGetなどメッセージに”Y”で応答し、インストールは完了です。

無事インストールは行えましたか?
インストールできたら「接続確認」の項に進んでください。

もしエラーとなり失敗した方は次項の「オフライン環境でのインストール」に進んでください。

オフライン環境でのインストール

インターネット経由でのインストールが行えない場合は別途モジュールをダウンロードし、手動でインストールを行うことが可能です。

まずはモジュールのダウンロードから。
冒頭に記載した通り、Graph SDKはメインモジュールとサービス毎のサブモジュールで構成されており、手動でインストールを行う場合は利用するモジュール全てをインストールする必要があります。

まずは以下リンクより必須モジュールと利用するサブモジュールをダウンロードしましょう。

必須のモジュールはメインモジュールである「Microsoft.Graph」と認証用のサブモジュール「Microsoft.Graph.Authentication」です。
他、ユーザー管理をするのであれば「Microsoft.Graph.Users」、グループのメンテナンスには「Microsoft.Graph.Groups」といった具合に必要なモジュールを全てダウンロードしていきます。

ダウンロード対象のモジュール名をクリックし、遷移先にて[Manual Download]タブを選択、[Download the raw nupkg file]をクリックします。

※Graphメインモジュールの例

ここから先はオフライン作業が可能です。
他のパソコンでダウンロードのみ行った場合は、ダウンロードしたファイルをGraph SDKをインストールするパソコンにコピーしておきましょう。

インストール対象のパソコンのPowerShellで以下のコマンドを発行し、ダウンロードした全ての.nupkgファイルのブロックを解除します。

Unblock-File -Path C:\xxxxx\xxxxxxxx.x.x.x.nupkg

※-Pathにはダウンロードした.nupkgファイルのパスを指定します。

続いて、ブロック解除したファイル「xxxxxxxx.x.x.x.nupkg」の拡張子を「zip」に変更し、解凍します。

解凍されたフォルダ内はこのような構成となっていました。

※Graphメインモジュールの例

解凍されたフォルダーの名前からバージョン名を取り除き、モジュール名のみにリネームします。
例:microsoft.graph.1.12.1 → Microsoft.Graph
例:microsoft.graph.authentication.1.12.1 → Microsoft.Graph.Authentication
例:microsoft.graph.users.1.12.1 → Microsoft.Graph.Users
例:microsoft.graph.groups.1.12.1 → Microsoft.Graph.Groups

続いてPowerShellで以下のコマンドを発行し、モジュールのインストール先パスを確認します。

$env:PSModulePath

私の環境では以下の出力がありました。

C:\Users\UserName\Documents\WindowsPowerShell\Modules;C:\Program Files\WindowsPowerShell\Modules;C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules

ここに表示されたフォルダのいずれかに、展開~リネームしたフォルダをコピーすることでインストールは完了です。

なお、「C:\Program Files\WindowsPowerShell\Modules」に展開したフォルダを配置することでそのパソコンにサインインする全ユーザーのPowerShellに反映されます。
※このフォルダへのコピーには管理者権限が必要です。

※C:\Program Files\WindowsPowerShell\Modulesにコピーした例

接続確認

インストールが完了したら、さっそくMicrosoft Graphへの接続確認を行ってみましょう。

以下の接続コマンドを発行します。

Connect-Graph -Scopes "User.ReadWrite.All", "Group.ReadWrite.All"

※ユーザー及びグループのメンテナンスを行う場合の例。

認証画面に応答しましょう。
ユーザーは全体管理者や管理するサービスの管理者です。

パスワードを入力。二段階認証を設定している方はそれにも応答しましょう。

アクセス許可の確認画面で「組織の代理として同意する」にチェックを付け、[承諾]をクリックしましょう。

プロンプトに「Welcome to Microsoft Graph!」と表示されたら接続は成功です。

ここで、インストールしたモジュールで使用可能なコマンドを確認してみましょう。

Get-Command -Module Microsoft.Graph.Users

Graph.Users サブモジュールで利用可能なコマンド一覧が表示されます。

色々ありますね!
各コマンドの詳細については後々当サイトでもご紹介していきたいと考えています。

操作が終わりましたら明示的な切断を行っておきましょう。

Disconnect-Graph

あわせて導入したいPowerShellモジュール

Azure AD PowerShellの代替として登場したGraph SDKですが、まだまだサポートするコマンドは少ない状況です。

従って従来のPowerShellモジュールも並行して利用していかなければならないのが現状ですが、これらモジュールは混在することが可能。

管理する可能性のあるサービスについてはPowerShellモジュールのインストールを行い、いつでもコマンドレットが使えるよう準備しておきましょう。

Exchange関連コマンドレットの使用には「EXOモジュール」が必要です。

SharePoint関連コマンドレットの使用には「SPO 管理シェル」が必要です。

従来のAzureADコマンドレットの使用には「AAD モジュール」が必要です。

まとめ

いかがでしたでしょうか。

セキュアな構成にすればするほど制限がかかり、エラーの原因が掴みづらいもの。
今回は最終手段となる手動インストールを中心にご紹介しました。

コメント

タイトルとURLをコピーしました