リモートで手動ディレクトリ同期の実行命令を出すスクリプトです。ディレクトリ同期サーバにPowerShell2.0を入れるのが一番楽な気もしますが、なるべくデフォルトのMicrosoftの環境をいじらないというポリシーなら、ということで。
ログインアカウントの権限にてディレクトリ同期を実行します。事前に以下のパラメータを変更しておきます。GUIDは、Identity ManagerのManagement Agentsを開いて【Configure Run Profiles】メニューで適切な同期メニューをクリックして【Script】出力した中に入ってます。
13L : dir-sync.example.com → ディレクトリ同期サーバのコンピュータ名に変更
24L : XXXXXXXX-XXXX-X… → SourceADのGUIDに変更
29L : YYYYYYYY-YYYY-Y… → TargetWebServiceのGUIDに変更
RemoteDirSync.vbs
'#################################################################### '# Office365 ディレクトリ同期 手動同期リモート実行スクリプト(WSH版) '# '# 使用法: C:> cscript RemoteDirSync.vbs '# ※ディレクトリ同期管理者のドメインアカウント(MIIS_Adminsの '# メンバー)にて実行すること '# '#################################################################### Option Explicit Dim strComputer strComputer = "dir-sync.example.com" ForceDirSync strComputer WScript.Echo vbCrlf & "o365 Directory Sync Complete!" Sub ForceDirSync( strComputer ) Dim Locator, WMIService Dim MA, MASet Const PktPrivacy = 6 Set WMIService = GetObject ( "winmgmts://" & strComputer & "/root/MicrosoftIdentityIntegrationServer" ) WMIService.Security_.AuthenticationLevel = PktPrivacy Set MASet = WMIService.ExecQuery("select * from MIIS_ManagementAgent where Guid = '{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}'") for each MA in MASet WScript.Echo "Running " + MA.name + ".Execute(""Delta Import Delta Sync"")..." WScript.Echo "Run completed with result: " + MA.Execute("Delta Import Delta Sync") next Set MASet = WMIService.ExecQuery("select * from MIIS_ManagementAgent where Guid = '{YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY}'") for each MA in MASet WScript.Echo "Running " + MA.name + ".Execute(""Delta Confirming Import"")..." WScript.Echo "Run completed with result: " + MA.Execute("Delta Confirming Import") WScript.Echo "Running " + MA.name + ".Execute(""Export"")..." WScript.Echo "Run completed with result: " + MA.Execute("Export") next End Sub
ログインユーザと違うアカウントで実行したければ、
Option Explicit Dim strComputer, strUser, strPassword strComputer = "dir-sync.example.com" strUser = "Administrator" strPassword = "P@ssw0rd" ForceDirSync strComputer, strUser, strPassword WScript.Echo vbCrlf & "o365 Directory Sync Complete!" 'ListShares strComputer, strUser, strPassword 'WScript.Echo vbCrlf & "Ready." Sub ForceDirSync( strComputer, strUser, strPassword ) Dim strObject Dim Locator, WMIService, objShare Dim MA, MASet Const PktPrivacy = 6 Set Locator = CreateObject( "WbemScripting.SWbemLocator" ) Set WMIService = Locator.ConnectServer ( strComputer, "root/MicrosoftIdentityIntegrationServer", strUser, strPassword ) WMIService.Security_.AuthenticationLevel = PktPrivacy Set MASet = WMIService.ExecQuery("select * from MIIS_ManagementAgent where Guid = '{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}'") for each MA in MASet WScript.Echo "Running " + MA.name + ".Execute(""Delta Import Delta Sync"")..." WScript.Echo "Run completed with result: " + MA.Execute("Delta Import Delta Sync") next Set MASet = WMIService.ExecQuery("select * from MIIS_ManagementAgent where Guid = '{YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY}'") for each MA in MASet WScript.Echo "Running " + MA.name + ".Execute(""Delta Confirming Import"")..." WScript.Echo "Run completed with result: " + MA.Execute("Delta Confirming Import") WScript.Echo "Running " + MA.name + ".Execute(""Export"")..." WScript.Echo "Run completed with result: " + MA.Execute("Export") next End Sub
とかですかね? 出力したScriptやこの辺りを参照にしてご自身の環境に合わせて修正して下さい。