0

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
}    

私の質問は

  • gpupdatePowerShell(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-jobwait-jobそれも解決しませんでしたが、私は終わりに近づいています。

  • このタスクを実行するためのより良いオプションはありますか?
  • PowerShellエラー処理について読む価値はありますか?
4

0 に答える 0