#author("2018-11-12T22:47:27+09:00","","")
#navi(../)
* PowerShellでプロセスを実行しているユーザーを調べる方法 [#q51b385d]
PowerShellで特定のプロセスがどのユーザーで実行されているかを取得し確認する手順を以下に記します。

#contents
#htmlinsertpcsp(win-top.html,win-sp.html)

* 関連記事 [#v0bd96a1]
-[[PowerShellでプロセス一覧を確認する・Get-Process>PowerShell/PowerShellでプロセス一覧を確認する・Get-Process]]
-[[PowerShellでプロセスの詳細な情報を取得する方法・Get-Process, Format-List>PowerShell/プロセスの詳細な情報を取得する方法・Get-Process, Format-List]]
-[[PowerShellで稼働中のプロセス一覧を表示する・Get-Process>PowerShell/稼働中のプロセス一覧を表示する・Get-Process]]
-[[PowerShellでファイル一覧を取得し各ファイルの情報をCSV化する方法>PowerShell/ファイル一覧を取得し各ファイルの情報をCSV化する方法]]

* 動作確認環境 [#d81b516e]
 PS C:\> (Get-WmiObject Win32_OperatingSystem).Caption
 Microsoft Windows 10 Pro
 PS C:\> ($PSVersionTable).PSVersion.toString()
 5.1.17134.228

* Get-Process -IncludeUserName [#wf31879e]
Get-ProcessコマンドレットのIncludeUserNameオプションを使用使用すれば簡単にプロセスの実行ユーザーを取得することができます。

&color(red){本コマンドはPowerShellを管理者として実行してください。};

** IncludeUserNameを付与してGet-Processを実行~ [#r02a99c8]
以下の通り、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
** プロセス名で抽出 [#dd618a25]
以下のようにすれば、プロセス名(以下の例では、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

** Where-Objectで特定のプロセスを抽出し表示 [#s7ffc49a]
以下の例では、''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出力も簡単 [#wba4b4a3]
以下のようにすれば、CSV出力も簡単にできます。~
本例では、デスクトップ上ににproc.csvを出力しています。
 Get-Process -IncludeUserName | ConvertTo-Csv | Out-File -Encoding default $HOME\Desktop\proc.csv
#ref(01.png)
#br


以上、PowerShellのGet-Processコマンドレットを使って、プロセスを実行しているユーザー名を取得する方法でした。

#htmlinsertpcsp(win-btm.html,win-sp.html)


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS