嘿,我是PowerShell的新手,在他的博客上找到了Ed Wilson的一个有用的脚本:http://blogs.technet.com/b/heyscriptingguy/archive/2012/11/12/force-a-domain-wide-update-of-group-policy-with-powershell.aspx。
我需要根据自己的需要对其进行一些自定义,只需要一些帮助就可以获得正确的代码。
我将使用他的代码,因为我所做的只是用我的凭据和AD信息替换它:
$cn = Get-ADComputer -filt *
$cred = Get-Credential iammred\administrator
$session = New-PSSession -cn $cn.name -cred $cred
icm -Session $session -ScriptBlock {gpupdate /force}
我添加的是下两行尝试暂停脚本以允许gpupdate处理然后重新启动计算机:
Start-Sleep -s 120
Restart-Computer -ComputerName $cn.name
当我一起运行脚本时,它似乎只是在我输入凭据后挂起。我的猜测是它不像我呈现Start-Sleep cmdlet的方式,因为我可以在没有Start-Sleep的情况下成功运行Restart-Computer cmdlet。问题是它没有等待gpupdate完成所以政策没有被推动。我运行脚本时没有出现任何错误,只是挂起。我让它运行了大约10分钟但没有成功。
感谢您提供有关使此脚本正常运行的任何帮助或建议。提前感谢任何意见。
答案 0 :(得分:1)
您的睡眠调用没有任何问题,但这不是最好的方法。您可以等待作业完成超时(如果命令挂起),例如:
$job = icm -Session $session -ScriptBlock {gpupdate /force} -AsJob
Wait-Job $job -Timeout 120
Remove-PSSession $session
Restart-Computer $cn.name
答案 1 :(得分:0)
icm -Session $session -ScriptBlock {
gpupdate /force; Start-Sleep -s 120; Restart-Computer -Force}