web-dev-qa-db-fra.com

Comment obtenir des informations de ligne de commande pour un processus dans PowerShell ou C #

par exemple: si je lance notepad.exe c:\autoexec.bat,

Comment puis-je obtenir c:\autoexec.bat Dans Get-Process notepad Dans PowerShell?

Ou comment puis-je obtenir c:\autoexec.bat Dans Process.GetProcessesByName("notepad"); en C #?

57
victorwoo

Dans PowerShell, vous pouvez obtenir la ligne de commande d'un processus via WMI:

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

Notez que vous devez disposer de privilèges d'administrateur pour pouvoir accéder à ces informations sur les processus en cours d'exécution dans le contexte d'un autre utilisateur. En tant qu'utilisateur normal, il n'est visible pour vous que pour les processus exécutés dans votre propre contexte.

105
Ansgar Wiechers

Cette réponse est excellente, cependant, pour l'avenir et pour vous rendre service, Sauf si vous utilisez un assez ancien PowerShell (dans ce cas, je recommande une mise à jour!) Get-WMIObject a été remplacé par Get-CimInstance Hey Scripting Guy référence

Essaye ça

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