0

我想执行一个gpupdate实例-ActionSystem.IO.FileSystemWatcher但 gpupdate 在从 PowerShell 调用时偶尔会完全挂起。我尝试了以下方法来处理无响应的 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-command 没有真正关闭 gpupdate 进程,而后者没有响应)?

更新:

我尝试添加/wait参数,但它没有改变任何东西。我还尝试了以下代码:

    $gp = Invoke-WmiMethod -ComputerName "localhost"`
         -EnableAllPrivileges`
         -Path win32_process -Name "create"`
         -ArgumentList "gpupdate /target:Computer /wait:5"

$gp.ReturnValueas $errcode,但问题仍然存在。几次运行后,我仍然没有得到脚本的响应,并且订阅者停止触发。在尝试了整个事情start-job并且wait-job也没有解决它之后,我束手无策。

  • 是否有更好的选择来执行此任务?
  • 是否值得阅读 powershell 错误处理?
4

0 回答 0