我想基于进程命令行获取进程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

最佳答案

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

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

看到:
 Get-Help about_comparison_operators

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

09-25 17:39