Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables Powershell传递变量以启动作业_Variables_Powershell_Start Job - Fatal编程技术网

Variables Powershell传递变量以启动作业

Variables Powershell传递变量以启动作业,variables,powershell,start-job,Variables,Powershell,Start Job,在powershell中,我想学习将变量调用到开始作业的最佳方法,这样我就不必编辑每台服务器的脚本,因为它将根据我放置脚本的客户端而特定 $Servername = 'Server1' $pingblock = { pathping $servername | Out-File C:\client\PS\ServerPing.TXT } start-job $pingblock 当我运行上面的代码时,我只是在帮助下得到一个文件,就像我忘记了指定$server

在powershell中,我想学习将变量调用到开始作业的最佳方法,这样我就不必编辑每台服务器的脚本,因为它将根据我放置脚本的客户端而特定

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

当我运行上面的代码时,我只是在帮助下得到一个文件,就像我忘记了指定$servername一样。

使用
开始作业上的
-ArgumentList
参数,例如:

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
要使用PSv3+替代方案进行补充:

可以使用引用传递给
开始作业
的脚本块内调用方作用域中的变量值,作为传递参数的替代方法(默认情况下,作为后台作业执行的脚本块看不到调用方的任何变量或其他定义):

上述收益率:

目标:服务器1
请注意,将要在远程计算机上执行的脚本块传递到
调用命令时,可以使用相同的技术-请参阅

$Servername = 'Server1'
Start-Job { "Target: " + $using:ServerName } | Receive-Job -Wait -AutoRemoveJob