0

PowerShell を初めて使用する私は、Ed Wilson のブログで役立つスクリプトの 1 つを見つけました。 -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 の処理を​​許可し、コンピューターを再起動する次の 2 行です。

Start-Sleep -s 120
Restart-Computer -ComputerName $cn.name

スクリプトをすべて一緒に実行すると、資格情報を入力した後にハングしているように見えます。Start-Sleep コマンドレットがなくても、Restart-Computer コマンドレットを正常に実行できるため、Start-Sleep コマンドレットの提示方法が気に入らないのではないでしょうか。問題は、gpupdate が完了するのを待たないため、ポリシーがプッシュされないことです。スクリプトを実行してもエラーは発生せず、ハングするだけです。約10分間実行したままにしましたが、成功しませんでした。

このスクリプトを適切に機能させるための助けや提案をいただければ幸いです。ご意見をお寄せいただきありがとうございます。

4

2 に答える 2

1

睡眠の呼び出しに問題はありませんが、最善の方法ではありません。ジョブがタイムアウトで終了するのを待つことができます (コマンドがハングした場合)。

$job = icm -Session $session -ScriptBlock {gpupdate /force} -AsJob
Wait-Job $job -Timeout 120
Remove-PSSession $session
Restart-Computer $cn.name
于 2014-05-02T14:37:52.247 に答える
0

@キース・ヒルは正しいです、睡眠は良さそうです。他にできることは、スリープ/再起動コマンドをターゲット マシンにプッシュすることです。

icm -Session $session -ScriptBlock {
    gpupdate /force; Start-Sleep -s 120; Restart-Computer -Force}
于 2014-05-02T14:41:09.450 に答える