powershell基于CommandLine的ProcessID如何匹配

时间:2014-03-21 17:18:13

标签: powershell

我想根据流程命令行获取进程ID。

$saucelab = gwmi Win32_Process -Filter "name = 'java.exe'" | select CommandLine, ProcessID

现在可能有很多名为" java"但我想找到包含我的字符串的特定进程的进程。

$pid = $saucelab | Where-Object {$_.CommandLine -contains "-port 4444"} | select ProcessID

这不起作用

有没有办法根据流程processID匹配

获取commandLine

1 个答案:

答案 0 :(得分:3)

-contains是一个数组运算符。命令行将是一个字符串。请尝试使用-match:

$pid = $saucelab | Where-Object {$_.CommandLine -match "-port 4444"} | 
select -ExpandProperty ProcessID

请参阅:

 Get-Help about_comparison_operators 

编辑:当您选择一个属性时,您将获得一个具有一个属性的对象。如果您只想要属性值,请使用-ExpandProperty参数。