SharePoint Online の特定サイトでカスタムスクリプトを継続有効化する手順メモ~Azure Automation版~

May 28, 2026

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 の流れは次のとおりです。

  1. Runbook を作成し、SPOCustomScriptXX.ps1 の内容を貼り付け
  2. テストウィンドウで実行確認
  3. 問題なければ公開

補足として、Azure Portal での公開操作が重い場合は、Publish_Runbook.ps1 を使って即時公開する方法が紹介されています。

運用時の見どころ

  • ターゲットサイトを変数で切り替えやすい
  • 証明書認証ベースで運用できる
  • スケジュール実行で「有効化状態の維持」を自動化しやすい

上記を踏まえると、単発対応ではなく「継続的に設定状態を保ちたい」ケースに向いた構成です。


Profile picture

記載者: けろ-みお

Microsoft365/SharePoint/Teams/Azure/Power Platform等の技術情報を備忘録として利用しているブログです

My Company Web Site