我想将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
}
我的问题是
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-job
和wait-job
尝试了整件事情之后,我也没有解决这个问题,而是在我的智慧结束。