使用powershell的gpupdate

时间:2012-11-22 10:07:14

标签: powershell wait updating group-policy

我想将gpupdate作为-Action实例的System.IO.FileSystemWatcher执行,但是当从PowerShell调用时,gpupdate偶尔会挂起。我已经尝试了以下方法来处理响应中的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
}    

我的问题是

  • 是否有人遇到类似的问题,从PowerShell调用gpupdate(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错误处理?

0 个答案:

没有答案