是否可以帮助我列出没有服务及其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"
谢谢,
答案 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字段,但您显然可以将其修改为您需要的任何内容。