小ネタ – Run Profileの自動実行

 
Tech・Edのデモでは、MSILMポータルサイトで
ユーザーを作成(もしくは各種変更)を行った後、
Import → Synchronization → ExportとRun Profileを実行する予定です。
しかし、一連の処理を毎回手動で実行するのは面倒なので、
次のようなPowerShellスクリプトを作って、自動化させる予定です。
 
■前提
MSILMデータベース用管理エージェント名 : MSILMMA
Active Directory用管理エージェント名 : ADDSMA
Full Importを実行するRun Profile名 : import
Full Synchronizationを実行するRun Profile名 : sync
Exportを実行するRun Profile名 : export
 
■スクリプト
$ILMMA = Get-WmiObject -Namespace rootMicrosoftIdentityIntegrationServer -Class MIISManagementAgent -Filter "Name=’MSILMMA’"
$ADDSMA = Get-WmiObject -Namespace rootMicrosoftIdentityIntegrationServer -Class MIISManagementAgent -Filter "Name=’ADDSMA’"
 
$i = 0
While ($i -eq 0)
{
    $ILMMA.Execute("import")
    $i = $ILMMA.NumImportAdd().ReturnValue
    Start-Sleep -Second 5
}
 
$ILMMA.Execute("sync")
$ADDSMA.Execute("export")
 
 
このスクリプトにより、
・MSILMデータベースからコネクタスペースへのインポート ($ILMMA.Execute("import"))
・コネクタスペースからメタバースへの同期 ($ILMMA.Execute("sync"))
・コネクタスペース(AD用)からActive Directoryへのエクスポート ($ADDSMA.Execute("export"))
がそれぞれ実行されます。
 
途中に出てくる$ILMMA.NumImportAdd().ReturnValueは
インポートを実行した結果、Addした項目数を確認しています。
ユーザーを作成した直後にインポートを実行しても実際にインポートされず、
ユーザーを作成してから少し時間がたってからインポートできるようになるので、
インポートを繰り返し実行し、Addの項目数が0でなくなったら、ユーザーがインポートされたと判断し、
同期、エクスポート、とその後の処理をしています。
 
当日はこれを使いますので、皆様の環境でも同じことを試したい方はご自由にお使いください。