プラットフォーム

手元のPowerShellを、ガードレール付きのセルフサービスに。

RealmJoinは厳選した175本のRunbookライブラリを自社のAzure Automationアカウントに同期し、スクリプトごとにフォームを組み立て、誰が何を実行できるかを決めます。ジョブは必ずログを残します。

  • 175本のRunbook、オープンソース
  • 自社のAzureサブスクリプションで実行
  • 対象グループ単位まで指定できる権限
  • 毎月追加されるRunbook
Report sent to it-licensing@contoso.com. Example data.

自分で書かなくていい175本のRunbook

ライブラリはGitHubでオープンソースとして公開されています。RealmJoinがそれを自社のAutomationアカウントに同期し、毎月出るリリースに合わせて最新に保ち、自作のRunbookもその隣で実行できます。

ライブラリのRunbook、スコープ別
Runbook
スケジュール実行Cleanup Autopilot devices
スケジュール実行Delete stale devices
スケジュール実行Auto-approve driver updates
スケジュール実行Notify users about low disk space
スケジュール実行Report devices without primary user
スケジュール実行Report expiring application credentials
スケジュール実行Monitor pending EPM requests
スケジュール実行Sync MFA-secure users to group
Backup Conditional Access policies
Notify changed CA policies
List inactive users
Invite external guest users
Add shared mailbox
Export all Intune devices
Check SharePoint and OneDrive status
Offboard user permanently
Offboard user temporarily
Create temporary access pass
Reset MFA
Revoke or restore access
Confirm or dismiss risky user
Convert to shared mailbox
Delegate full access
Set out of office
Set Teams Phone
Assign Windows 365
Resize Windows 365
Check Intune enrollment readiness
Assign groups by template
List sign-in events
Wipe device
Outphase device
Rename device
Set primary user
Wipe managed app data
Check device compliance
Isolate or release device
Restrict or release code execution
Check Defender status
Show BitLocker recovery key
Show FileVault recovery key
Show LAPS password
Reset mobile device PIN
Toggle drain mode
Restart host
Add or remove user
Add or remove owner
Add or remove nested group
Rename group
Change visibility
List all members
List user devices
Remove group
Enable or disable external mail
Show or hide in address book
Archive team
スケジュール実行Unenroll updatable assets

各スコープからいくつかのRunbookを抜粋しています。組織、96本:General 39、Devices 19、Security 15、Mail 10、Applications 9、Collaboration 3、Phone 1。
ユーザー、43本:Mail 13、General 12、Security 9、Phone 5、User info 3、AVD 1。
デバイス、22本:General 12、Security 8、AVD 2。
グループ、14本:General 9、Mail 2、Devices 2、Teams 1。

  • GitHubから同期

    既定ではproductionブランチから取得し、rjgit-の接頭辞を付けて、ライブラリに合わせて追加、更新、削除します。

  • モジュールも自動で用意

    必要なモジュールは各スクリプトから読み取り、依存関係も含めてPowerShell Galleryからインストールします。

  • マネージドランタイム

    AzとAzure CLIを備えたPowerShell 7.4の環境を、自社のAutomationアカウントに用意します。

フォームは自動で組み上がります

RealmJoinは各スクリプトのパラメーターブロックとコメントベースのヘルプを読み取ります。Use-RJInterfaceの注釈があれば、パラメーターはMicrosoft Graphと連動したユーザー、グループ、デバイスのピッカーや、数値、日付、テキストの入力欄、あるいはテナント設定になります。ValidateSetはドロップダウンになります。

  • 必須項目はジョブの開始前に検証されます
  • テナントごとに、任意の項目を非表示、改名、並べ替え、初期値設定できます
  • 条件付きルール:ある選択肢を選ぶと、ほかの項目が変わります
  • 監査証跡のため、実行者の名前が渡されます

RealmJoinがスクリプトから生成する画面です。説明のため、ライブラリの2本のRunbookのパラメーターをまとめています。

offboard-user-permanently.ps1抜粋
param (  [Parameter(Mandatory = $true)]  [ValidateScript( { Use-RJInterface -Type Graph -Entity User -DisplayName "User" } )]  [String] $UserName,  [ValidateScript( { Use-RJInterface -Type Graph -Entity User -DisplayName "Who should step in as group/resource owner?" } )]  [String] $ReplacementOwnerName,  [bool] $ReplaceManagerReferences = $false,  [ValidateSet("WhatIf (report only)", "Delete")]  [string] $DeleteMode = "WhatIf (report only)")
UserMMMaren Müller
Who should step in as group/resource owner?LBLukas Brandt
Replace manager referencesOff
Delete modeWhatIf (report only)

誰が何を実行できるかを、対象単位で

Runbookの権限は、テナントごとに1つのJSONドキュメントで定義します。ロールはEntraのグループに対応付け、Runbookを名前のパターンで許可します。対象グループでロールをさらに絞れるので、一次サポートにはスウェーデンのローカル管理者パスワードだけを表示させる、といった指定ができます。スケジュール実行には専用の許可パターンと拒否パターンがあります。

  • ワイルドカードでまとまった範囲をまとめて有効化、無効化できます
  • Runbook単位だけでなく、対象グループ単位でもロールを制限できます
  • コメントと末尾のカンマを許容するので、読みやすさを保てます
Settings / Runbook permissions同梱サンプルの抜粋
{  "EnabledRunbookPatterns": [ "rjgit-*_mail_*", "rjgit-*_security_*" ],  "DisabledRunbookPatterns": [ "*password*" ],  "Roles": {    "LAPSAdmin": {      "Groups": [ /* CFG - RealmJoin Admin */ "724c288d-…" ],      "AllowedRunbookPatterns": [ "rjgit-*_security_*" ]    },    "DeviceAdmin": {      "Groups": [ /* Sweden Supporters */ "52fcd199-…" ],      "AllowedRunbookPatterns": [ "rjgit-device_*" ]    }  },  "TargetEntityGroups": {    /* Sweden Users: LAPS only for Sweden Supporters */    "ca03f227-…": { "RestrictRoles": { "LAPSAdmin": [ "52fcd199-…" ] } }  },  "SchedulingDisabledRunbookPatterns": [ "rjgit-device_*" ]}
  • 自社のタイムゾーンで動くスケジュール

    毎時、毎日、毎週、毎月のスケジュールが最初から用意されていて、いずれも自社テナントのタイムゾーンで動きます。独自のスケジュールも追加できます。

    • スケジュール実行のジョブを手動実行と並べて表示
    • Runbookのパターン単位でスケジュール実行を許可、禁止
  • 無人実行を前提とした作り

    ライブラリのうち34本がそのために作られています。クリーンアップ、レポート、監視など、手で起動する必要のない処理です。

    • レポートはメール、または期限付きのダウンロードリンクで
    • スケジュール実行はすべてジョブ履歴と自社のLog Analyticsワークスペースに記録

オンプレミスにも対応 Preview

ファイル共有、Active Directoryの属性、レガシーアプリなど、オンプレミスに残る処理もあります。名前が_hybridで終わるRunbookは、自社ネットワーク内のHybrid Runbook Workerグループ上で実行できます。起動するときにワーカーグループを選ぶだけで、ほかは変わりません。

プレビュー期間中はRealmJoinのステージングポータルで利用できます。

RealmJoinポータル

フォーム、権限、スケジュール

自社のAzure Automation

ジョブ、ログ、スケジュール

自社のHybrid Worker

*_hybridのRunbookをオンプレミスで実行

段階展開して結果を測れる修復スクリプトのライブラリ

RealmJoinは公開GitHubリポジトリから厳選したIntuneの修復スクリプトを毎晩同期します。サブスクライブしてステージングし、スケジュールに沿って管理対象グループへ配布すれば、デバイスごとの検出結果と修復結果を確認できます。1台ですぐ実行したい場合は、デバイスページから起動できます。

  • 未管理、管理対象、ステージング済み、配布済み、非推奨の状態が一目でわかります
  • 検出用と修復用のソースを並べて表示します
  • 上流で削除されたスクリプトも、使っている間は残ります
Example data.

それ以外の人のためのフォーム

すべての依頼がRunbookで片付くわけではありません。セルフサービスフォームは翻訳ファイル付きのJSONスキーマから作られ、従業員には社内フォームとして表示され、送信内容はメールまたはWebhook、たとえばITSMツールやTeamsのフローに送られます。回答はすべて履歴に残ります。

  • 翻訳ファイルによる多言語対応
  • フォームごとにメールの送信先と、任意のWebhookを指定
  • 管理者にはフォーム履歴、ユーザーページには回答を表示
Example data.

どこからでもRunbookを起動

Customer APIはRunbookを同期実行またはバックグラウンド実行し、ジョブの状態、出力テキスト、出力ストリーム、例外を返します。ITSMからは、退職手続きを依頼したチケットそのもので処理を実行できます。

  • 実行して待機

    ジョブの終了時に返る同期呼び出しで、1時間までのジョブに使えます。

  • バックグラウンドで開始

    すぐにジョブIDを返すので、必要なときに状態を取得します。

  • ジョブの状態

    待機中、実行中、完了、失敗。

  • 出力

    出力テキストのみ、または全出力ストリーム。

  • 例外

    ジョブが失敗したときの例外テキスト。

  • 毎晩のログエクスポート

    完了したジョブは23:00に自社のLog Analyticsワークスペースへ送られます。Customer APIリファレンス

スクリプトフォルダーは、もう不要に。

Azure Automationを接続してライブラリを同期し、適切なガードレールを設けたうえで、最初のRunbookをヘルプデスクに渡してください。