データベースでは、現在実行中のすべてのプロセスのリストと、それらを開始したsqlコマンドを取得できます。
Windowsボックスでも同様のことを行いたいのですが。
プロセスのリストは取得できますが、プロセスを開始したコマンドラインは取得できません。
私の質問は次のとおりです:WindowsでPIDを指定-それを実行したコマンドライン命令を見つけるにはどうすればよいですか
仮定:
PowershellおよびWMI。
Get-WmiObject Win32_Process | Select ProcessId,CommandLine
または
Get-WmiObject -Query "SELECT CommandLine FROM Win32_Process WHERE ProcessID = 3352"
プロセスに関するこの情報にアクセスする権限が必要であることに注意してください。したがって、知りたいプロセスが特権コンテキストで実行されている場合は、コマンドをadminとして実行する必要がある場合があります。
この情報を取得するには、WMIC.EXEを使用してWMIサブシステムを使用できます。 PIDを600と仮定します。
wmic.exe path Win32_Process where handle='600' get name, commandline /format:list
プロセスの名前やその他の特性を検索することもできます。このコマンドを使用して、すべての属性をリストします。
wmic.exe path Win32_Process get /format:list
他の答えは確かに良いオプションです。コマンドラインの性質上、自動化されたシステムで役立つでしょう(そして、私はタグから、それがあなたが望んでいたことを理解しています)。もちろん、一部の人々はこの種の情報をGUIで探索したいと思うかもしれないので、ここにそれらの線に沿った代替があります。
Process Explorerは、Microsoftが管理するSysinternalsツールです。プロセスのプロパティダイアログとプロセスを起動した親にプロセスのコマンドラインを表示できますが、そのプロセスの名前は使用できなくなる可能性があります。これがプロセスプロパティダイアログです。
プロセスがいつ、どのような状況で起動されたかの詳細な監査証跡が必要な場合は、Process Monitorと呼ばれる別のSysinternalsツールを使用できます。ここでは、「プロセス開始」イベントをフィルタリングし、プロセスが起動された環境について学習し、その時間に他にどのようなイベントが発生していたかを確認できます。それは非常に強力なプログラムです。イベントプロパティダイアログは次のとおりです。
Ryan Riesの便利なPowerShellの回答 を-Filter
パラメータを介したより短い代替手段で使用(= /// =) Get-CimInstance
deprecated-since-v3 Get-WmiObject
cmdlet の代わりに。
# Target a process by its PID (process ID) and report its command line,
# using the PowerShell session's own PID as an example ($PID).
(Get-CimInstance Win32_Process -Filter "ProcessId=$PID").CommandLine
# Alternatively, target process(es) by name (may return multiple processes),
# using Notepad.exe as an example.
# Select-Object is used to report both the PID and the command line.
Get-CimInstance Win32_Process -Filter "Name='Notepad.exe'" |
Select-Object ProcessId, CommandLine
-Filter
パラメーターを使用すると、基本的に、-Query
を介して完全なクエリステートメントを渡す代わりに、 [〜#〜] wql [〜#〜] ステートメントのWHERE
句を渡すことができます。