我想执行一个gpupdate
实例-Action
,System.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.ReturnValue
as $errcode
,但问题仍然存在。几次运行后,我仍然没有得到脚本的响应,并且订阅者停止触发。在尝试了整个事情start-job
并且wait-job
也没有解决它之后,我束手无策。
- 是否有更好的选择来执行此任务?
- 是否值得阅读 powershell 错误处理?