powershell脚本:获取svchost进程列表,过滤出用户名非“Local Service”,"NETWORK SERVICE","SYSTEM"的PID
时间: 2023-09-29 10:10:09 浏览: 42
以下是获取svchost进程列表,并过滤出特定用户名PID的PowerShell脚本:
```
Get-Process svchost | Where-Object {($_.UserName -notlike "*Local Service*") -and ($_.UserName -notlike "*NETWORK SERVICE*") -and ($_.UserName -notlike "*SYSTEM*")} | Select-Object PID
```
该脚本使用`Get-Process`命令获取所有svchost进程,并使用`Where-Object`过滤出用户名非“Local Service”,"NETWORK SERVICE","SYSTEM"的进程。最后,`Select-Object`命令选择PID属性并输出。
相关问题
使用 Get-WmiObject 命令列出所有用户名非"local service","system","network service" 的svchost进程列表,然后获取该列表中一个随机PID.
可以使用以下 PowerShell 命令来实现:
```powershell
$svchosts = Get-WmiObject -Class Win32_Process -Filter "Name='svchost.exe'" | Where-Object {$_.GetOwner().User -notlike "LocalService" -and $_.GetOwner().User -notlike "System" -and $_.GetOwner().User -notlike "NetworkService"}
$randomPID = Get-Random -InputObject $svchosts | Select-Object -ExpandProperty ProcessId
```
首先,我们使用 `Get-WmiObject` 命令获取所有名为 `svchost.exe` 的进程,然后使用 `Where-Object` 过滤掉用户名为 "LocalService"、"System" 和 "NetworkService" 的进程。筛选后的进程列表存储在 `$svchosts` 变量中。
接着,我们使用 `Get-Random` 命令从 `$svchosts` 中随机选择一个进程,并从中提取其 PID,存储在 `$randomPID` 变量中。最后,我们可以输出 `$randomPID` 变量的值,即可得到一个随机的 svchost 进程的 PID。
使用 Get-WmiObject 命令列出所有非"local service","system","network service" 的进程的 PID、进程名和用户名,然后过滤出svchost列表。
可以使用以下命令来实现:
```powershell
Get-WmiObject -Class Win32_Process | Where-Object {($_.GetOwner().User -ne "LOCAL SERVICE") -and ($_.GetOwner().User -ne "SYSTEM") -and ($_.GetOwner().User -ne "NETWORK SERVICE")} | Select-Object ProcessId, Name, @{Name="UserName";Expression={$_.GetOwner().User}} | Where-Object Name -eq "svchost.exe"
```
这个命令首先使用 `Get-WmiObject` 获取所有进程的信息,然后使用 `Where-Object` 过滤掉用户名为 "LOCAL SERVICE"、"SYSTEM" 和 "NETWORK SERVICE" 的进程,接着使用 `Select-Object` 选择 PID、进程名和用户名,并使用一个计算表达式来获取用户名。最后使用另一个 `Where-Object` 来过滤出进程名为 "svchost.exe" 的进程。