web-dev-qa-db-ja.com

PowerShellまたはC#でプロセスのコマンドライン情報を取得する方法

例:notepad.exe c:\autoexec.batを実行すると、

PowerShellでc:\autoexec.batGet-Process notepadを取得するにはどうすればよいですか?

または、C#でProcess.GetProcessesByName("notepad");c:\autoexec.batを取得するにはどうすればよいですか?

57
victorwoo

PowerShellでは、WMIを介してプロセスのコマンドラインを取得できます。

$process = "notepad.exe"
Get-WmiObject Win32_Process -Filter "name = '$process'" | Select-Object CommandLine

別のユーザーのコンテキストで実行されているプロセスに関する情報にアクセスするには、管理者権限が必要であることに注意してください。通常のユーザーとしては、自分のコンテキストで実行されているプロセスに対してのみ表示されます。

105
Ansgar Wiechers

この答えは優れていますが、将来の保証と将来のために、かなり古いPowerShellを使用していない限り(この場合は更新をお勧めします!)Get-WMIObjectはGet-CimInstanceに置き換えられました Hey Scriptingガイ参照

これを試して

$process = "notepad.exe"
Get-CimInstance Win32_Process -Filter "name = '$process'" | select CommandLine 
18
PsychoData