PowerShellで特定のプロセスがどのユーザーで実行されているかを取得し確認する手順を以下に記します。
PS C:\> (Get-WmiObject Win32_OperatingSystem).Caption Microsoft Windows 10 Pro PS C:\> ($PSVersionTable).PSVersion.toString() 5.1.17134.228
Get-ProcessコマンドレットのIncludeUserNameオプションを使用使用すれば簡単にプロセスの実行ユーザーを取得することができます。
本コマンドはPowerShellを管理者として実行してください。
以下の通り、UserName列が表示され、プロセスを実行しているユーザーを確認することができます。
PS C:\Windows\system32> Get-Process -IncludeUserName
Handles WS(K) CPU(s) Id UserName ProcessName
------- ----- ------ -- -------- -----------
338 23464 0.47 7096 X121E\sakura ApplicationFrameHost
277 15924 1.88 9676 NT AUTHORITY\LOCAL ... audiodg
430 25988 0.95 1832 X121E\sakura backgroundTaskHost
330 24452 0.75 11176 X121E\sakura backgroundTaskHost
164 8852 0.09 7852 X121E\sakura browser_broker
295 18964 0.39 5472 X121E\sakura conhost
590 4888 1.55 480 csrss
562 5236 5.83 564 csrss
371 14132 1.13 3420 X121E\sakura ctfmon
352 11452 0.81 4436 NT AUTHORITY\LOCAL ... dasHost
146 5924 0.08 3824 NT AUTHORITY\SYSTEM DbxSvc
119 6412 0.13 5592 X121E\sakura dllhost
222 11556 0.53 8164 X121E\sakura dllhost
2194 169968 46.50 10384 X121E\sakura Dropbox
172 7600 0.11 10436 X121E\sakura Dropbox
311 9992 0.31 10500 X121E\sakura Dropbox
216 328 0.25 3092 NT AUTHORITY\SYSTEM DropboxUpdate
606 48376 25.22 796 Window Manager\DWM-1 dwm
以下のようにすれば、プロセス名(以下の例では、Dropbox)で情報を抽出することができます。
PS C:\Windows\system32> Get-Process -IncludeUserName -ProcessName Dropbox
Handles WS(K) CPU(s) Id UserName ProcessName
------- ----- ------ -- -------- -----------
2175 170088 47.39 10384 X121E\sakura Dropbox
172 7728 0.11 10436 X121E\sakura Dropbox
311 9992 0.31 10500 X121E\sakura Dropbox
以下の例では、NT AUTHORITY\SYSTEMで起動されているプロセス一覧を表示しています。
PS C:\Windows\system32> Get-Process -IncludeUserName | Where-Object { $_.UserName -eq "NT AUTHORITY\SYSTEM" }
Handles WS(K) CPU(s) Id UserName ProcessName
------- ----- ------ -- -------- -----------
146 4804 0.08 3824 NT AUTHORITY\SYSTEM DbxSvc
218 3116 0.27 3092 NT AUTHORITY\SYSTEM DropboxUpdate
188 7080 0.13 1728 NT AUTHORITY\SYSTEM ibmpmsvc
209 6744 0.25 1736 NT AUTHORITY\SYSTEM LPlatSvc
1310 14320 7.53 692 NT AUTHORITY\SYSTEM lsass
586 21368 1.02 3856 NT AUTHORITY\SYSTEM officeclicktorun
814 43188 15.36 7336 NT AUTHORITY\SYSTEM SearchIndexer
566 12656 0.81 3336 NT AUTHORITY\SYSTEM spoolsv
315 8156 1.17 376 NT AUTHORITY\SYSTEM svchost
84 3596 0.05 844 NT AUTHORITY\SYSTEM svchost
1095 27012 9.06 876 NT AUTHORITY\SYSTEM svchost
以下のようにすれば、CSV出力も簡単にできます。
本例では、デスクトップ上ににproc.csvを出力しています。
Get-Process -IncludeUserName | ConvertTo-Csv | Out-File -Encoding default $HOME\Desktop\proc.csv
以上、PowerShellのGet-Processコマンドレットを使って、プロセスを実行しているユーザー名を取得する方法でした。