GitHub の下記リポジトリで公開した内容を、実施観点で要点整理します。
何をする仕組みか
この仕組みは、SharePoint Online の特定サイトに対して、カスタムスクリプト有効化を Azure Automation の Runbook で継続的に実行するためのものです。
- Azure Automation 側でスケジュール実行が可能
- PowerShell 7.2 向けと 5.1 向けの 2 系統のスクリプトを用意
構成図
下図は「どこで何を実行して、どこに設定が反映されるか」をシンプルに表したものです。
flowchart LR
A["Azure Automation<br/>Runbook + スケジュール"] -->|証明書認証で接続| B["SharePoint Online<br/>管理API"]
B --> C["対象サイト<br/>SiteUrl"]
D["Automation 変数<br/>ClientId / TenantId / Tenant / TenantAdminUrl<br/>SiteUrl / SPOAppCertBase64 / SPOAppCertPassword"] --> A
E["Automation 証明書<br/>*.pfx を登録"] --> A
F["Entra ID アプリ登録<br/>API 権限付与"] --> A図の見方:
- Runbook が定期実行される実行基盤は Azure Automation
- 認証に必要な情報は Automation 変数と証明書に保持
- Runbook が SharePoint Online 管理APIに接続し、対象サイトへ設定を適用
スクリプト構成
README では以下の 3 ファイルが中心です。
- Publish_Runbook.ps1
- Azure Portal で Runbook 公開が重い場合に、Cloud Shell などから素早く公開するための補助
- SPOCustomScript72.ps1
- PowerShell 7.2 向け
- PnP.PowerShell を利用
- SPOCustomScript51.ps1
- PowerShell 5.1 向け
- SharePoint Online Management Shell を利用
事前準備の要点
1. Azure Automation 変数の登録
README で指定されている主要変数は次のとおりです。
- ClientId
- SiteUrl
- SPOAppCertBase64
- SPOAppCertPassword
- Tenant
- TenantAdminUrl
- TenantId
特に証明書まわりは、自己証明書を作成し、pfx を Base64 化して Automation 変数へ登録する流れになっています。
2. Entra ID アプリ登録と権限設定
README ではアプリ登録後に SharePoint 権限を付与する手順が示されています。
- 代表例: Sites.FullControl.All
- または Sites.Selected を使い、対象サイトに限定して FullControl を付与
Sites.Selected を使う場合は、Graph API を用いて対象サイトへの権限付与例も README に記載されています。
3. 証明書を Automation にアップロード
自己証明書作成時に作った pfx を、Automation アカウントの共有リソースの証明書へ登録します。
4. 必要モジュールを追加
README では以下のモジュールが案内されています。
- PnP.PowerShell 2.12.0(主にランタイム 7.2)
- SharePoint Online Management Shell 16.0.27215.12000/12001(5.1 または 7.2)
デプロイに失敗する場合の回避策として、NuGet パッケージを手動アップロードする手順も補足されています。
Runbook 作成から公開まで
README の流れは次のとおりです。
- Runbook を作成し、SPOCustomScriptXX.ps1 の内容を貼り付け
- テストウィンドウで実行確認
- 問題なければ公開
補足として、Azure Portal での公開操作が重い場合は、Publish_Runbook.ps1 を使って即時公開する方法が紹介されています。
運用時の見どころ
- ターゲットサイトを変数で切り替えやすい
- 証明書認証ベースで運用できる
- スケジュール実行で「有効化状態の維持」を自動化しやすい
上記を踏まえると、単発対応ではなく「継続的に設定状態を保ちたい」ケースに向いた構成です。