我想根据流程命令行获取进程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
答案 0 :(得分:3)
-contains是一个数组运算符。命令行将是一个字符串。请尝试使用-match:
$pid = $saucelab | Where-Object {$_.CommandLine -match "-port 4444"} |
select -ExpandProperty ProcessID
请参阅:
Get-Help about_comparison_operators
编辑:当您选择一个属性时,您将获得一个具有一个属性的对象。如果您只想要属性值,请使用-ExpandProperty参数。