使用 Get-WmiObject 命令列出所有用户名非"local service","system","network service" 的svchost进程列表,然后获取该列表中第一个PID,并转换为int类型赋值给一个变量。
时间: 2023-11-21 18:05:32 浏览: 121
你可以使用以下PowerShell命令完成此操作:
```
$svchosts = Get-WmiObject -Class Win32_Process | Where-Object {$_.Name -eq "svchost.exe" -and $_.GetOwner().User -notin @("LocalService", "System", "NetworkService")} | Select-Object -Property ProcessId
$pid = [int]$svchosts[0].ProcessId
```
首先,使用 `Get-WmiObject` 命令获取所有 `svchost.exe` 进程的列表。然后使用 `Where-Object` 过滤出所有用户名不是 `"LocalService"`, `"System"`, `"NetworkService"` 的进程。接着,使用 `Select-Object` 选择 `ProcessId` 属性,并将结果赋值给 `$svchosts` 变量。
最后,从 `$svchosts` 变量中获取第一个进程的 PID,并使用 `[int]` 将其转换为整数类型,并将其赋值给 `$pid` 变量。
相关问题
使用 Get-WmiObject 命令列出所有用户名非"local service","system","network service" 的svchost进程列表,然后获取该列表中第一个PID
可以使用以下命令来实现:
```
Get-WmiObject Win32_Process -Filter "Name='svchost.exe'" | Where-Object {($_.GetOwner().User -notlike '*local service*') -and ($_.GetOwner().User -notlike '*system*') -and ($_.GetOwner().User -notlike '*network service*')} | Select-Object -First 1 ProcessId
```
这个命令使用 `Get-WmiObject` 获取所有名字为 `svchost.exe` 的进程列表,然后通过 `Where-Object` 筛选出用户名不是 "local service"、"system" 或 "network service" 的进程。最后使用 `Select-Object` 获取第一个进程的 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" 的进程。
阅读全文