gpupdate
インスタンスのとしてを実行したいのですが、PowerShellから呼び出されたときにgpupdateが完全にハングすることが-Action
あります。System.IO.FileSystemWatcher
応答しないgpupdateを処理するために次の方法を試しましたが、期待どおりに機能しません。gpupdateが失敗すると、スクリプト全体がハングします。
$command = "/target:computer"
$gp = Start-Process -FilePath gpupdate `
-ArgumentList $command -NoNewWindow -PassThru
wait-process -inputobject $gp -timeout 10
if( $gp.HasExited -ne $true )
{
stop-process -inputobject $gp -force
$errcode = 99
}
else
{
$errcode = $gp.exitcode
}
私の質問は
gpupdate
PowerShell(v2)からの呼び出しで同様の問題が発生したことがありますか。その理由は何でしょうか?- 上記のコードスニペットが期待どおりに機能しないのはなぜですか(つまり
wait-process
、後者が応答しないときに-コマンドがgpupdateプロセスを実際にシャットダウンしないのはなぜですか?)
アップデート:
パラメータを追加しようとしました/wait
が、何も変更されませんでした。次のコードも試しました。
$gp = Invoke-WmiMethod -ComputerName "localhost"`
-EnableAllPrivileges`
-Path win32_process -Name "create"`
-ArgumentList "gpupdate /target:Computer /wait:5"
$gp.ReturnValue
として、$errcode
しかし問題は残っています。数回実行してもスクリプトから応答が得られず、サブスクライバーが起動を停止します。すべてを試してみましたがstart-job
、wait-job
それも解決しませんでしたが、私は終わりに近づいています。
- このタスクを実行するためのより良いオプションはありますか?
- PowerShellエラー処理について読む価値はありますか?