Powershell

使用 Powershell,如何獲取特定使用者擁有的程序的 ID?

  • August 29, 2015

使用 Powershell,我想做 Unix 的等價物

ps -auxc | grep Emacs

kill -9 364

(假設 365 是第一個命令告訴我的 pid。)

我怎麼做?我發現讓 Powershell 告訴我一個程序的所有者和我嘗試的方式非常困難,獲取一個 wmi-object win32_process 然後將其放入名為“explorer.exe”的程序列表中 剛剛啟動了很多 explorer.exe實例。

我通過快速Google找到了這個:

$owners = @{}
gwmi win32_process |% {$owners[$_.handle] = $_.getowner().user}

get-process | select processname,Id,@{l="Owner";e={$owners[$_.id.tostring()]}}

似乎按要求返回使用者。您可能可以從那裡開始。希望有幫助。

使用 PowerShell 4 及更高版本,您可以執行以下操作:

Get-Process -IncludeUserName | Where-Object {$_.UserName -match "peter" -and $_.ProcessName -eq "Notepad"} | Stop-Process -Force

或使用別名時:

ps -IncludeUserName | ? {$_.UserName -match "peter" -and $_.ProcessName -eq "Notepad"} | spps -Force

不像 Unix 那樣短,但比舊的 PowerShell 版本好。

引用自:https://serverfault.com/questions/233275