gpt4 book ai didi

powershell - Start-Job 脚本 block ——如何调用带参数的 cmdlet?

转载 作者:行者123 更新时间:2023-12-01 10:59:23 26 4
gpt4 key购买 nike

我是 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
}

关于powershell - Start-Job 脚本 block ——如何调用带参数的 cmdlet?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12571788/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com