0

我正在使用以下脚本尝试 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.

4

0 回答 0