Powershell を介してプログラムで COM+ プロキシ コンポーネントをインストールし、msi で msiexec を使用してから、COMAdmin.COMAdminCatalog オブジェクトを使用してリモート サーバーをプロキシに設定しています。
問題は、新しくインストールされたプロキシが COMAdminCatalog の「アプリケーション」コレクションで使用可能になるまでに時間がかかることです。アプリケーション リストを取得する前にカタログを強制的に更新する方法はありますか?
基本的に、私がしていることはこれです:
msiexec /q /i $appName.msi
を使用し
COMAdmin.COMAdminCatalog
てアプリを列挙します。
function Set-Remote-Server-For-Complus-Application($appName, $remoteServer) {
$comAdmin = New-Object -comobject COMAdmin.COMAdminCatalog
$apps = $comAdmin.GetCollection("Applications")
$apps.Populate();
$app = $apps | Where-Object {$_.Name -eq $appName}
if ($app -eq $null) {
Write-Warning "Unable to find COM+ app ""$appName""."
Return
}
$app.Value("ApplicationProxyServerName") = $remoteServer
$result = $apps.SaveChanges()
$apps = $null
if ($result -eq 1) {
Write-Output "Successfully set complus remote server ""$remoteServer"" on ""$appName"""
}
}
問題は、アプリケーションが見つからないことです。Start-Sleep -Seconds 2
呼び出しの間にa を追加すると、機能します。ただし、2 秒以上かかる場合もあれば、200 ミリ秒しかかからない場合もあり、不必要に長く待機するため、スリープは良くありません。
COMAdmin.COMAdminCatalog が実際に更新されていることを確認する方法はありますか?