¿Interesado en usar el cmdlet PowerShell Get-Process para mostrar los procesos en ejecución de un sistema? Con Get-Process
puedes encontrar el propietario del proceso, el ID del proceso, o incluso dónde en el disco está ubicado el proceso.
En este artículo, aprenderás cómo usar el cmdlet Get-Process
de PowerShell a través de ejemplos del mundo real. Si controlar procesos para doblegarlos a tu voluntad en Windows o Linux suena divertido, ¡entonces sigue leyendo!
Relacionado: Cómo Matar un Proceso en Linux Usando ps, pgrep, pkill ¡y más!
Prerrequisitos
Antes de continuar, aquí están los prerrequisitos necesarios para seguir los ejemplos en este artículo.
- Aunque PowerShell 5.1 de Windows es suficiente para la mayoría de los ejemplos aquí, PowerShell 7.1 y superior es necesario para el soporte de Linux.
Relacionado: Actualización a PowerShell 7: Un Recorrido
- Este artículo utiliza Windows 10 y Ubuntu 20.04 LTS, pero cualquier sistema operativo en el que se ejecute PowerShell funcionará.
¿Listo? ¡Sumérgete y gestiona algunos procesos!
Mostrando Procesos en Ejecución
Get-Process
administra los procesos locales. En este primer ejemplo, estás utilizando el cmdlet Get-Process de PowerShell. Este comando muestra todos los procesos en ejecución.
Get-Process
devuelve una instantánea en un punto en el tiempo de la información de los procesos en ejecución del sistema. Para mostrar información de procesos en tiempo real, Windows ofrece el Administrador de tareas y Linux ofrece el comando top.
Para comenzar, abre tu consola de PowerShell y ejecuta Get-Process
. Observa que Get-Process
devuelve la información de los procesos en ejecución, como se muestra a continuación. El formato de salida es idéntico para los sistemas operativos Windows y Linux.

Get-Process
cmdlet on Windows to display local processes.Por defecto, los alias de comando
gps
ops
existen paraGet-Process
. Como PowerShell 7 es multiplataforma, el comandops
entra en conflicto con un comando Linux integrado. Por lo tanto,ps
no funcionará en Linux, solo el aliasgps
.
El significado de la salida de Get-Process
puede no ser inmediatamente obvio. Las propiedades predeterminadas de Get-Process
se describen con más detalle a continuación.
- NPM(K) – La cantidad de memoria no paginada que está utilizando un proceso, se muestra en kilobytes, como se indica con la notación
(K)
. - PM(M) – La cantidad de memoria pageable que está utilizando un proceso, mostrada en megabytes, como se indica mediante la notación
(M)
. - WS(M) – El tamaño del conjunto de trabajo del proceso, mostrado en megabytes. El conjunto de trabajo consiste en las páginas de memoria que fueron referenciadas recientemente por el proceso.
- VM(M) – La cantidad de memoria virtual que está utilizando el proceso, mostrada en megabytes. Incluye el almacenamiento en los archivos de paginación en disco.
- CPU(S) – La cantidad de tiempo del procesador que el proceso ha utilizado en todos los procesos, mostrada en segundos.
- Id – El ID de proceso (PID) del proceso.
- SI – Identificador de sesión del proceso en ejecución. La sesión
0
indica que el proceso está disponible para todos los usuarios,1
indica que el proceso existe bajo el primer usuario conectado, y así sucesivamente. - ProcessName – El nombre del proceso en ejecución.
Para mostrar una lista de alias de propiedad mapeados a nombres completos de propiedad, use el comando
Get-Process | Get-Member -MemberType 'AliasProperty'
.
A continuación, hay otro gran ejemplo. Para cada instancia del proceso brave que encuentra, utiliza el ID de ese proceso ($_.id
) y lo pasa a Get-NetTCPConnection
. PowerShell luego utiliza Get-NetTCPConnection
para encontrar información sobre cada conexión de red que el proceso brave tiene abierta.
Ejecuta el siguiente código en tu sesión de PowerShell cuando el navegador Brave esté en ejecución.
¡Gracias a Jay Adams en SystemFrontier!
¡Felicidades, ahora puedes ver todos los procesos en ejecución tanto en Windows como en Linux usando Get-Process
!
Búsqueda de Atributos Específicos del Proceso
Get-Process
devuelve muchas propiedades diferentes de los procesos en ejecución, como has visto antes. Al igual que con todos los demás objetos de PowerShell, puedes seleccionar propiedades de los objetos de manera selectiva.
Veamos ahora un ejemplo simple de cómo puedes recuperar propiedades específicas para un proceso en particular:
- Abre tu calculadora de Windows.
2. Con una consola de PowerShell abierta, ejecuta Get-Process
utilizando el parámetro Name
para mostrar solo los procesos en ejecución con Calculator como nombre. Verás la misma salida que has visto anteriormente.
Get-Process
devuelve muchas propiedades como se esperaba. Tal vez solo quieras encontrar la utilización de la CPU con el valor bajo la columna CPU(s)
. Rodea el comando Get-Process
con paréntesis y haz referencia a la propiedad CPU
como se muestra a continuación. Verás que solo devuelve el valor de la propiedad CPU
.
Observa que
Get-Process
devuelve un nombre llamadoCPU(s)
y el fragmento de código anterior utiliza solo el nombreCPU
. A veces PowerShell no muestra el nombre real de la propiedad en la salida. Este concepto se realiza con un archivo de formato PS1XML.
El tiempo de CPU se expresa como un total de segundos en todos los núcleos. Para obtener un número más legible para los humanos, redondea al décimo más cercano usando un método Math
como se muestra a continuación.

Puedes usar el enfoque anterior para encontrar cualquier otra propiedad también, como
Id
si deseas ver solo el ID de un proceso.
Deja la aplicación Calculadora ejecutándose. Utilizarás esta aplicación para el resto de los ejemplos.
Recuperación del Uso de Memoria del Proceso
Diagnosticar sistemas con ejecución lenta puede ser un desafío, con la memoria limitada a menudo siendo una causa. Continuando con la aplicación Calculadora, recupera el proceso Calculadora
y muestra solo la propiedad VM
. Como se ve a continuación, la memoria utilizada se muestra en megabytes (MB).

Calculator
process memory usage.Para ayudar a entender el uso de la memoria, utiliza los factores de conversión integrados de PowerShell para cambiar megabytes (MB) a gigabytes (GB). En el siguiente ejemplo, convertirás la memoria utilizada a GB y luego usarás el biblioteca matemática .NET método Round
para redondear el valor, como se ve en la captura de pantalla a continuación.
Utilizar las utilidades integradas de PowerShell para convertir los valores hace que sea más fácil entender la salida. Sigue leyendo para aprender cómo localizar el ID de un proceso.

Exponiendo Propiedades Poco Conocidas
No todas las propiedades están incluidas o se muestran de forma predeterminada con Get-Process
. Sigue leyendo a continuación para obtener más información sobre las propiedades Path
y UserName
y cómo usarlas!
Descubriendo Dónde Vive un Binario de Proceso
Hay muchos lugares en un sistema donde se puede almacenar un ejecutable de proceso. Si un proceso está en ejecución actualmente, Get-Process
facilita encontrar la ruta del sistema de archivos del proceso, a pesar de que Path
no se muestra de forma predeterminada. Como se muestra a continuación, la propiedad Path
contiene la ubicación del sistema de archivos del ejecutable del proceso.

Get-Process
to display a process’s full file system path on Windows.Así como en Windows, Get-Process
en Linux también devuelve la ruta del sistema de archivos. En el ejemplo a continuación, el proceso gnome-calculator
se está ejecutando con la ruta mostrada en la salida de la consola.

Get-Process
to display a process’s full file system path on Linux.Los actores malintencionados astutos pueden nombrar a un proceso de la misma manera o similar a uno de confianza. Por lo tanto, la capacidad de localizar la ruta del sistema de archivos ayuda en un escenario de respuesta a incidentes de seguridad (IR). Siga leyendo para descubrir cómo localizar al propietario del proceso, ya que UserName
no está incluido en la salida predeterminada.
Encontrar al Propietario del Proceso
Para incluir el valor UserName
en la salida, deberá utilizar el parámetro IncludeUserName
. Es importante conocer al propietario del proceso, especialmente para evitar terminar inadvertidamente el proceso de otro usuario. Como se muestra a continuación, la propiedad UserName
ahora está incluida en la salida del proceso.

Calculator
process on Windows.¡Finalmente, siga leyendo para aprender a usar Get-Process
en una computadora remota para recuperar información del proceso!
Encontrar Procesos en Computadoras Remotas
Aunque en Windows PowerShell, Get-Process
no tiene capacidades remotas por sí solo, siempre puede aprovechar PowerShell Remoting y el Invoke-Command
para ejecutarlo en computadoras remotas.
Relacionado: Cómo configurar PSRemoting con Windows y Linux
Pero, si estás en Linux o estás ejecutando PowerShell 6 en Windows, ahora tienes un parámetro ComputerName
que puedes usar para consultar procesos en computadoras remotas.
El parámetro
-ComputerName
fue eliminado en PowerShell 7.x ya que el cmdlet no está directamente relacionado con la conexión remota. Para lograr lo mismo, puedes envolverlo en unInvoke-Command
, así:Invoke-Command -ComputerName "NombreComputadora" -ScriptBlock { Get-Process -ProcessName 'proceso' }
Cuando se ejecuta el comando anterior contra una computadora remota, se muestra el mismo resultado que si el comando Get-Process
se ejecutara localmente.
A continuación se muestra un ejemplo de conexión remota a otra computadora y obtención de procesos en ejecución:

Puedes apuntar a varias computadoras separándolas con una coma, por ejemplo:
Get-Process -ComputerName SRV1,SRV2.
Próximos pasos
En este artículo, has aprendido cómo usar el cmdlet PowerShell Get-Process
para encontrar procesos en ejecución con PowerShell en computadoras locales y remotas tanto en Linux como en Windows.
Ahora, ¿qué harás con este conocimiento? ¡Intenta pasar un proceso recuperado por Get-Process
a Stop-Process
en una computadora local o remota para terminarlo!
Source:
https://adamtheautomator.com/powershell-get-process/