リモートで手動ディレクトリ同期の実行命令を出すスクリプトです。ディレクトリ同期サーバに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やこの辺りを参照にしてご自身の環境に合わせて修正して下さい。
