Par exemple, si je lance notepad.exe c:\autoexec.bat
,
Comment puis-je obtenir c:\autoexec.bat
en Get-Process notepad
dans PowerShell ?
Ou comment puis-je obtenir c:\autoexec.bat
en Process.GetProcessesByName("notepad");
en C# ?
Par exemple, si je lance notepad.exe c:\autoexec.bat
,
Comment puis-je obtenir c:\autoexec.bat
en Get-Process notepad
dans PowerShell ?
Ou comment puis-je obtenir c:\autoexec.bat
en Process.GetProcessesByName("notepad");
en C# ?
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 des privilèges d'administrateur pour pouvoir accéder à ces informations sur les processus s'exécutant dans le contexte d'un autre utilisateur. En tant qu'utilisateur normal, vous n'avez accès qu'aux processus s'exécutant dans votre propre contexte.
Cette réponse est excellente, cependant, pour des raisons de sécurité et pour vous rendre service à l'avenir, à moins que vous n'utilisiez un vieux powershell (dans ce cas, je recommande une mise à jour !) Get-WMIObject a été remplacé par Get-CimInstance. Hey référence Scripting Guy
Essayez ceci
$process = "notepad.exe"
Get-CimInstance Win32_Process -Filter "name = '$process'" | select CommandLine
Si vous mettez le code suivant dans votre fichier powershell $profile, vous pouvez étendre de façon permanente la classe d'objets "process" et utiliser la propriété "CommandLine".
exemple :
get-process notepad.exe | select-object ProcessName, CommandLine
code :
$TypeData = @{
TypeName = 'System.Diagnostics.Process'
MemberType = 'ScriptProperty'
MemberName = 'CommandLine'
Value = {(Get-CimInstance Win32_Process -Filter "ProcessId = $($this.Id)").CommandLine}
}
Update-TypeData @TypeData
J'utilise powershell 7.1 et cela semble être intégré dans l'objet processus maintenant comme une propriété scriptée :
> (Get-Process notepad)[0].CommandLine
"C:\WINDOWS\system32\notepad.exe"
Il est intéressant de noter que vous pouvez visualiser son implémentation et voir qu'elle utilise partiellement la réponse de PsychoData :
($process | Get-Member -Name CommandLine).Definition
System.Object CommandLine {get=
if ($IsWindows) {
(Get-CimInstance Win32_Process -Filter "ProcessId = $($this.Id)").CommandLine
} elseif ($IsLinux) {
Get-Content -LiteralPath "/proc/$($this.Id)/cmdline"
}
;}
L'exécution de Get-Member sur un processus montre qu'il s'agit d'une instance de System.Diagnostics.Process mais qu'il a plusieurs propriétés qui sont scriptés.
Les autres propriétés sont FileVersion, Path, Product, et ProductVersion.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.