在powershell进程中列出没有服务及其PID的进程

时间:2018-05-02 08:47:51

标签: powershell

是否可以帮助我列出没有服务及其PID的PowerShell进程?

我无法使用N/A服务列出所有这些流程,我尝试了一些命令,但没有成功:

Get-process | where-services {$_.Status -eq "N/A"}
Get-process | sort-object {$_.Status -eq "N/A"}
tasklist /svc /FI "SERVICES ne N/A"
tasklist /v /FI "SERVICES ne N/A"

谢谢,

1 个答案:

答案 0 :(得分:3)

不幸的是,Get-Service没有返回服务运行的进程的进程标识信息。但是,您可以通过具有Win32_Service属性的WMI ProcessId类获取该信息:

$ServicePids = (Get-Wmiobject win32_service).ProcessId | Sort-Object -Unique
$ProcessPids = (Get-Process).Id | Sort-Object -Unique

$Pids = Compare-Object $ServicePids $ProcessPids -PassThru

Get-Process -Id $Pids | Select Name,Id

您可以使用Get-Process获取流程的ID,然后使用Compare-Object进行比较。 -Passthru开关只返回Pid值(而不是比较对象)。

我还使用Sort-Object -Unique将两个列表缩减为已排序的唯一列表,以便正确比较。

最后,如果您希望输出与tasklist /svc类似,则可以再次使用Get-Process返回结果ID的对象,我们将其返回到$Pids。我已使用Select cmdlet将其过滤到Name和Id字段,但您显然可以将其修改为您需要的任何内容。