在Powershell中转义args [0]

时间:2013-04-30 14:23:13

标签: powershell parameters process terminate

我正在编写一个脚本来终止由它的Commandline调用标识的进程。如果我像硬编码那样工作正常:

Get-WmiObject Win32_Process -Filter "CommandLine LIKE '%worker04%'" | Invoke-WmiMethod -Name Terminate

现在我想使用这样的参数:

Get-WmiObject Win32_Process -Filter "CommandLine LIKE '%$args[0]%'" | Invoke-WmiMethod -Name Terminate

所以我可以这样调用我的脚本:

.\killprocess worker04

到目前为止它什么也没做。如何正确地将$args[0]放入-Filter区块?

2 个答案:

答案 0 :(得分:3)

我认为这样做会:

Get-WmiObject Win32_Process -Filter "CommandLine LIKE '%$($args[0])%'" | Invoke-WmiMethod -Name Terminate

答案 1 :(得分:1)

我在for循环中遇到了同样的问题,%$($args[0])%对我不起作用。我用这样的东西做到了:

for($i; $i -lt $args.length ;$i++)
{
$arg=$args[$i]
Get-WmiObject Win32_Process -Filter "CommandLine LIKE '$arg'...... 
}

这里工作正常。