Powershell передать переменную в start-job

в powershell я хотел бы узнать лучший способ вызова переменной в начальное задание, поэтому мне не нужно редактировать сценарий для каждого сервера, поскольку он будет конкретным на основе клиента, на котором я разместил свой скрипт.

$Servername = 'Server1'
    $pingblock = {
      pathping $servername | Out-File C:clientPSServerPing.TXT
    }
    start-job $pingblock

когда я запускаю свой код выше, я просто получаю файл с помощью, как будто я забыл указать $servername.

1 ответов


использовать -ArgumentList параметр on Start-Job например:

Start-Job -Scriptblock {param($p) "`$p is $p"} -Arg 'Server1'

в вашем случае:

$pingblock = {param($servername) pathping $servername | Out-File C:\...\ServerPing.txt}
Start-Job $pingblock -Arg Server1