SharePoint Online 管理シェルの制限環境でのインストール

SharePoint

SharePoint Onlineの技術をバックグラウンドで使用しているTeamsの登場で、無数に増えるSharePointサイトの管理に頭を抱えている管理者の方も多いと思います。

そんなSharePoint Onlineの管理を効率的にしてくれるのがMicrosoftが提供するPowerShell モジュール「SharePoint Online 管理シェル(以下SPO 管理シェル)」です。

無数にあるサイトへ一括で設定を適用したり、スクリプトを作りこんで日々のルーティーンを自動化するなど、アイデア次第で作業工数を大幅に削減することが可能となります。

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

SPO 管理シェルのインストール

早速ですが、SPO 管理シェルのインストールについて手順を解説していきます。

事前確認

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

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

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

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

Get-ExecutionPolicy

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

Set-ExecutionPolicy RemoteSigned

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

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

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

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

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

Install-Module -Name Microsoft.Online.SharePoint.PowerShell

エラー等なく完了しましたか?
ここでエラーが出てインストールが失敗する場合、次項の「オフライン環境でのインストール」を試みてみましょう。
無事にインストールができた方は、以下コマンドにてモジュールの読み込みを行います。

Import-Module Microsoft.Online.SharePoint.PowerShell

モジュールの読み込みが行えたらインストールは完了です。
「接続確認」の項に進んでください。

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

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

まずはモジュールのダウンロードから。
インターネット接続が可能な適当なパソコンで最新の安定版をダウンロードしてください。

※ダウンロードページの上部に表示されるのが最新の安定版です。

[Manual Download]タブを選択し、[Download the raw nupkg file]をクリックします。

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

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

Unblock-File -Path C:\xxxxx\microsoft.online.sharepoint.powershell.x.x.x.nupkg

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

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

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

解凍されたフォルダーの名前を「microsoft.online.sharepoint.powershell.x.x.x」から「Microsoft.Online.SharePoint.PowerShell」に変更します。

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

$env:PSModulePath

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

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

ここに表示されたフォルダのいずれかに、展開した「Microsoft.Online.SharePoint.PowerShell」フォルダをコピーすることでインストールは完了です。

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

これで手動でのインストールは完了です。

参考:.nupkgファイルのブロックを外さないと…

ダウンロードした.nupkgファイルのブロックを外さずに解凍してPowerShellモジュールインストールフォルダに配置した場合、モジュール自体は読み込まれますが以下のエラーとなりSharePoint Onlineに接続できませんでした。

Connect-SPOService : 用語 'Connect-SPOService' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラ
ムの名前として認識されません。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確
認してから、再試行してください。
発生場所 行:1 文字:1
+ Connect-SPOService -Url https://xxx.sharepoint.com/sites/portal
+ ~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Connect-SPOService:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

接続確認

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

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

Connect-SPOService -Url https://xxxx-admin.sharepoint.com

※xxxxには自テナント名が入ります。

認証画面に応答しましょう。
ユーザーは全体管理者もしくはSharePoint管理者です。

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

接続に成功しました。
接続確認のため、自テナントに設定しているドメイン一覧でも表示してみましょう。

Get-SPOSite

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

Disconnect-SPOService

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

SharePointだけでなく、ExchangeやAzureADもPowerShellモジュールを使うことで効率化が図れます。同様の手順でインストールを行うことができますので、この機会に必要なモジュールを使える状態にしておきましょう。

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

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

また、今後は各種PowerShellモジュールがMicrosoft Graph PowerShell SDKに統合される予定です。

まとめ

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

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

コメント

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