带参数

时间:2018-03-13 17:56:27

标签: powershell

我正在尝试使用Get-Service命令或Get-Process命令 但我想尝试使用" get"命令。 我得到了错误:

$a = Service
$b = Running

Get-$a | where {$_.Status -eq $b}

当我使用它时,这部分不起作用:

powershell -Command Get-$a

这个有效,我怎样才能完成这两个参数。

1 个答案:

答案 0 :(得分:1)

当您发出命令Service并且powershell无法按该名称查找命令时,它会自动尝试解析前缀为Get-的命令名称 - 所以$a已包含执行Get-Service的结果。

现在,如果要根据存储在变量中的名称执行命令,可以使用调用运算符(&):

$a = "Service" # notice that we're defining a string
$b = "Running" # otherwise powershell would think it should execute a command right away

& "Get-$a" |Where-Object { $_.State -eq $b }

As Mike Shepard points out,您也可以通过从Get-Command获取相应的CommandInfo对象来执行命令:

$cmd = Get-Command "Get-$a"
& $cmd |Where-Object { $_.State -eq $b }