Powershell字符串变量不满意

时间:2012-08-03 13:55:56

标签: powershell

我有以下powershell脚本:

$BizTalkHosts = "BTSSvc*"
    Foreach($svc in Invoke-Command -Computer d-vasbiz01 -ScriptBlock{ get-service -Name $BizTalkHosts})
    {
        Write-Host $svc.name
    }

我希望这返回远程计算机上以“BTSSVC *”开头的服务列表。问题是,直到运行时我才会真正知道服务名称,它将作为参数传递给脚本。

当我运行上面的脚本时,我得到了所有服务的列表 - 而不是我想要的!但是,如果我为get-service cmdlet提供字符串文字(即get-service -Name“BTSSvc *),它可以正常工作,提供过滤列表。

任何人都可以解释一下我做错了吗?

1 个答案:

答案 0 :(得分:3)

在这种情况下无需使用Invoke-Command,您可以使用Get-Service获取服务:

Get-Service -Name $BizTalkHosts -ComputerName d-vasbiz01

为了能够使用Invoke-Command(这是一种矫枉过正),你需要在脚本块中创建一个参数,并通过-ArgumentList参数将$ BizTalkHosts传递给脚本块

$BizTalkHosts = "BTSSvc*"
    Foreach($svc in Invoke-Command -Computer d-vasbiz01 -ScriptBlock{ param($name) get-service -Name $name}) -Argument $ArgumentList 
    {
        Write-Host $svc.name
    }