Variables Powershell传递变量以启动作业
在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
$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