En una base de datos, puedo obtener una lista de todos los procesos actualmente en ejecución y el comando sql que los inició.
Me gustaría hacer algo similar en una ventana de Windows.
Puedo obtener la lista de procesos, pero no la línea de comando que los inició.
Mi pregunta es: dado un PID en Windows, ¿cómo encuentro la instrucción de línea de comando que lo ejecutó?
Suposiciones
- Windows 7 y servidores equivalentes
windows
windows-command-prompt
pid
Hawkeye
fuente
fuente
| FL
al final del comando. Eso expande toda la línea de comando para mí. También podría querer jugar con| Select -ExpandProperty CommandLine
Puede usar el subsistema WMI, usando WMIC.EXE para obtener esta información. Suponiendo un PID de 600:
También puede buscar el nombre u otra característica del proceso. Use este comando para enumerar todos los atributos:
fuente
process
alias en lugar depath Win32_Process
; por ejemplo,wmic.exe process get
Las otras respuestas son ciertamente buenas opciones que le servirán en un sistema automatizado debido a su naturaleza de línea de comando (y veo en la etiqueta que eso es lo que quería). Por supuesto, algunas personas pueden querer explorar este tipo de información con una GUI, así que aquí hay una alternativa en ese sentido.
Process Explorer es una herramienta Sysinternals mantenida por Microsoft. Puede mostrar la línea de comando del proceso en el cuadro de diálogo de propiedades del proceso, así como el padre que lo inició, aunque el nombre de ese proceso ya no esté disponible. Aquí está el diálogo de propiedades del proceso:
Si desea una pista de auditoría más detallada de cuándo se inició un proceso y en qué condiciones, puede recurrir a otra herramienta de Sysinternals llamada Monitor de proceso. Aquí puede filtrar los eventos de "Proceso iniciado", conocer el entorno en el que se inició el proceso y ver qué otros eventos ocurrieron en ese momento. Es un programa bastante poderoso. Aquí está el diálogo de propiedades del evento:
fuente
Command Line
columna se ha agregado si pasa el mouse sobre esa columna.Para complementar la útil respuesta PowerShell de Ryan Ries con una alternativa más corta a través del
-Filter
parámetro que también usa enGet-CimInstance
lugar del cmdlet obsoleto-desde-v3Get-WmiObject
.El
-Filter
parámetro esencialmente le permite pasar laWHERE
cláusula de una declaración WQL en lugar de pasar una declaración de consulta completa a través de-Query
.fuente