ジョブで次のスクリプトを実行しようとしていますが、ブロック内のコードが最初のコマンドのみを実行して終了します。仕事は私がコメントアウトした場合-asjob -jobname IIS_Maintenance
ジョブが細かい実行されますが、それは同期だPowerShellリモートセッションとStart-Jobの問題
$computers = get-adcomputer -filter * | where { ($_.DNSHostName -match 'server')}
foreach ($computer in $computers) {
$session = New-PSSession -ComputerName $computer.DNSHostName
Invoke-Command -Session $session -ScriptBlock {
Stop-Service W3SVC -Force
Remove-Item "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root" -Force -Recurse
Start-Service W3SVC
} -asjob -jobname IIS_Maintenance
Remove-PSSession -Session $session
}
自分のコンピュータ上で完了が表示されます。 IISを停止するのに数秒かかるが、なぜジョブがそれを待っているのかわからない。
思考?
'Invoke-Command -Computer $ computers -ScriptBlock {...} -AsJob -JobName IIS_Maintenance'? –
これを非同期で実行しようとしていますか? – ArcSet
Argghhhh私はちょうど私が悪いコードを入れたことに気づいた、私は問題が何であるか把握するために実験を始めた...正しいコードは: $ session = New-PSSession -ComputerName $ computer.DNSHostName Invoke-Command - Session $ session -ScriptBlock .... 開始ジョブ行はありません。はい、私は非同期の方法でこれを実行しようとしているので、X個の並列ジョブを持つことができます。 – opti2k4