我正在使用以下脚本尝试 ping 存储在 CSV 中的计算机列表。期望的结果是我将能够验证超时条件。
$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 或空。
我看过关于将变量传递给脚本块的文章和问题,但它们是 forInvoke-Command
和 not Start-Job
,我还没有让它在翻译中工作。我的印象是,如果它有效,我将看不到我期望的输出,即Write-Host
.