適用于所有Windows PowerShell 版本
查看一個特定進程的所有者用戶是誰,有多少個改進程的實例,可以嘗試下面的代碼:
復制代碼 代碼如下:
$ProcessName = 'explorer.exe'
(Get-WmiObject -Query "select * from Win32_Process where name='$ProcessName'").GetOwner().User
注意:有許多不同的途徑可以獲取當前登陸的用戶,但是由于你的操作系統版本的不同,所以方法不盡相同。如果使用圖形化用戶界面還好,但是如果是非用戶界面Core服務器,腳本可能不能檢測到當前連接主機的用戶。
上面的例子返回了所有的“explorer.exe”進程的所有者。如果你擁有管理員權限并且遠程登陸了,用戶列表中還會可能會包括非活動用戶。因為每個桌面上打開的 explorer.exe可能屬于不同的會話,不同的用戶。
如果使用了 Sort-Object 命令,可以非常容易排除重復項。
復制代碼 代碼如下:
$ProcessName = 'explorer.exe'
(Get-WmiObject –Query "select * from Win32_Process where name='$ProcessName'").GetOwner().User |
Sort-Object -Unique
并且,如果你更改了要查看的進程的名稱,還會發現其它有趣的事情。下面的腳本會列出,當前通過PowerShell遠程管理連接到你機器的用戶:
復制代碼 代碼如下:
$ProcessName = 'wsmprovhost.exe'
try
{
(Get-WmiObject -Query "select * from Win32_Process where name='$ProcessName'").GetOwner().User |
Sort-Object -Unique
}
catch
{
Write-Warning "沒有發現用戶."
}