首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Start-Job脚本块--如何使用参数调用cmdlet?

Start-Job脚本块--如何使用参数调用cmdlet?
EN

Stack Overflow用户
提问于 2012-09-25 03:43:06
回答 1查看 8.7K关注 0票数 3

我是Start-Job cmdlet的新手,在调用带有参数的cmdlet的脚本块时遇到了问题。这是我到目前为止所知道的:

代码语言:javascript
复制
    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循环内部调用的:

代码语言:javascript
复制
foreach($Computer in $ComputerNames) {
  foreach($ServiceName in $ServiceNames) {
   #..call snippet above
  }
 }

我尝试过在调用脚本块时使用-ArgumentList,但也没有成功。我确定我漏掉了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-25 03:51:51

您确实需要使用ArgumentList (除非您使用的是PowerShell V3),例如:

代码语言:javascript
复制
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变量限定符,例如:

代码语言:javascript
复制
Start-Job -ScriptBlock {
   $ServiceObj = Get-Service -Name $ServiceName -CN $using:Computer -ErrorAction Stop
   Stop-Service -InputObj $ServiceObj -erroraction stop 
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12571788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档