次のスクリプトを使用して、CSV に保存されているコンピューターのリストを ping しようとしています。望ましい結果は、タイムアウト条件を確認できることです。
$servers = ipcsv "\\testbox\c$\Tools\PAL Stuff\servers.csv"
$timeoutSeconds = 3
$code = {
foreach($server in $servers) {
$name = $server.name
if($ping = Test-Connection -ComputerName $($args[0]) -BufferSize 16 -quiet -count 30) {
write-host "This should be 30 pings."
} else {
write-host "This should display when the job times out"
}
}
} -ArgumentList $name
$j = Start-Job -ScriptBlock $code
if (Wait-Job $j -Timeout $timeoutSeconds) { Receive-Job $j }
Remove-Job -force $j
このスクリプトはエラーになります:
「-」演算子の右側に値式を指定する必要があります。」
引数リストをここに移動すると:
$j = Start-Job -ScriptBlock $code -ScriptBlock $code
というエラーが表示されます
パラメータ 'ComputerName' の引数を検証できませんでした。引数が null または空です。
スクリプトブロックに変数を渡すことに関する記事や質問を見たことがありますが、それらは for でInvoke-Command
あり notStart-Job
であり、翻訳で機能させるにはまだ必要です。それが機能した場合、期待している出力が表示されないという印象を受けていWrite-Host
ます。