我正在尝试使用Get-Service
命令或Get-Process
命令
但我想尝试使用" get"命令。
我得到了错误:
$a = Service
$b = Running
Get-$a | where {$_.Status -eq $b}
当我使用它时,这部分不起作用:
powershell -Command Get-$a
这个有效,我怎样才能完成这两个参数。
答案 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 }