2012-04-09 2 views
15

all'interno di PowerShell Vorrei imparare il modo migliore per chiamare una variabile per un processo di avvio in modo da non dover modificare lo script per ogni server in quanto sarà specifico in base al cliente ho messo il mio script su.Powershell passa variabile a start-job

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

quando eseguo il mio codice di cui sopra ottengo solo un file con l'aiuto, come se ho dimenticato il specificare il $ nomeserver.

risposta

22

Utilizzare il parametro -ArgumentList su Start-Job es .:

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

Nel tuo caso:

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

Grazie! Ho perso il lavoro di avvio che aveva una lista di argomenti. – jjamesjohnson