2012-04-09 5 views
15

в пределах powershell. Я хотел бы узнать лучший способ вызова переменной в стартовое задание, поэтому мне не нужно редактировать сценарий для каждого сервера, поскольку он будет определен на основе клиент Я поместил свой скрипт.Переменная Powershell pass to start-job

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

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

ответ

22

Используйте параметр -ArgumentList на 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 
+0

Спасибо! Я пропустил эту стартовую работу, имея список аргументов. – jjamesjohnson