powershell之Start-Job 脚本 block ——如何调用带参数的 cmdlet
soundcode
阅读:33
2024-10-01 17:34:08
评论:0
我是 Start-Job
cmdlet 的新手,在调用带有带参数的 cmdlet 的脚本 block 时遇到问题。这是我到目前为止所拥有的:
Start-Job -ScriptBlock {
$ServiceObj = Get-Service -Name $ServiceName -ComputerName $Computer -ErrorAction Stop
Stop-Service -InputObj $ServiceObj -erroraction stop
}
我在运行 receive-job
时看到错误,-ComputerName
参数为 null 或为空,-InputObj
参数为 null 或空。在这两种情况下都不是这样。上面的代码片段是从两个 foreach 循环中调用的:
foreach($Computer in $ComputerNames) {
foreach($ServiceName in $ServiceNames) {
#..call snippet above
}
}
我试过在调用我的脚本 block 时使用 -ArgumentList
但也没有成功。我确定我错过了什么?
请您参考如下方法:
您确实需要使用 ArgumentList(除非您使用的是 PowerShell V3)例如:
Start-Job -ScriptBlock {param($ComputerName)
$ServiceObj = Get-Service -Name $ServiceName -CN $ComputerName -ErrorAction Stop
Stop-Service -InputObj $ServiceObj -erroraction stop
} -ArgumentList $Computer
如果您使用的是 PowerShell V3,则可以使用 using
变量限定符,例如:
Start-Job -ScriptBlock {
$ServiceObj = Get-Service -Name $ServiceName -CN $using:Computer -ErrorAction Stop
Stop-Service -InputObj $ServiceObj -erroraction stop
}
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。