Cómo obtener una lista de procesos en ejecución en PowerShell

  1. Usa el cmdlet Get-Process para mostrar una lista de procesos en ejecución en PowerShell
  2. Conclusión
Cómo obtener una lista de procesos en ejecución en PowerShell

Este artículo profundiza en la utilización de PowerShell para el monitoreo de procesos, enfatizando el cmdlet Get-Process. El cmdlet Get-Process, un elemento básico en la gestión de procesos, ofrece una vista completa de los procesos en ejecución en una máquina Windows, mostrando información crítica como identificadores de proceso, nombres, uso de memoria y consumo de CPU.

El artículo desarrolla metódicamente la sintaxis y los parámetros del cmdlet, atendiendo tanto a consultas de procesos generales como específicas.

Usa el cmdlet Get-Process para mostrar una lista de procesos en ejecución en PowerShell

Hay más de 200 cmdlets disponibles en el entorno de PowerShell. Cada cmdlet es responsable de realizar una función específica.

El Get-Process es uno de los cmdlets más utilizados que ayuda a recuperar la lista de procesos en ejecución en la máquina Windows.

Este cmdlet proporciona información útil relacionada con cada proceso, como el ID del proceso, el nombre, el uso de memoria, etc. Además, muestra una instantánea de los procesos en ejecución del sistema.

Sintaxis:

Get-Process [[-ProcessName] string[]] [-NameOfTheComputer string[]]
[-FileVersionInfo] [-Module] [CommonParameters]

Get-Process -processID Int32[] [-ComputerName string[]]
[-FileVersionInfo] [-Module] [CommonParameters]

Get-Process -ProcessInputObject Process[] [-ComputerName string[]]
[-FileVersionInfo] [-Module] [CommonParameters]

Parámetros:

  • ProcessName string[]: Especifica un arreglo de nombres de procesos a obtener. Este parámetro acepta caracteres comodín para la coincidencia de patrones. Si se omite este parámetro, Get-Process recupera todos los procesos.
  • ProcessId Int32[]: Especifica los identificadores de proceso de los procesos a ser recuperados. Este parámetro te permite dirigirte a procesos específicos directamente.
  • InputObject Process[]: Especifica un arreglo de objetos de proceso. Este parámetro te permite canalizar objetos de proceso a Get-Process.
  • NameOfTheComputer string[]: Indica el(los) nombre(s) de las computadoras en las que se ejecutará el comando. Si se omite este parámetro, Get-Process recupera procesos de la computadora local.
  • FileVersionInfo: Agrega información de versión del archivo a los objetos de proceso. Esto es útil cuando deseas detalles sobre el archivo ejecutable del proceso, como versión, nombre del producto, etc.
  • Module: Incluye los módulos (DLLs y archivos ejecutables) que están cargados por cada proceso. Esto es útil para un análisis más detallado, como verificar qué DLLs están cargadas por un proceso.
  • [CommonParameters]: Estos son los parámetros que todos los cmdlets admiten, como -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutVariable, -OutBuffer y -PipelineVariable.

Los parámetros son opcionales para el cmdlet Get-Process, y puedes usar esos parámetros según tus requisitos.

Mostrar todos los procesos en ejecución

Podemos usar directamente el comando Get-Process sin ningún parámetro. Debe mostrar todos los procesos en ejecución en ese momento.

Además, se puede usar el alias gps en lugar del comando Get-Process.

Get-Process
gps

Salida:

Mostrar todos los procesos en ejecución

Al ejecutar Get-Process o gps, PowerShell inicia una consulta en todo el sistema para recopilar información sobre todos los procesos activos. La ausencia de parámetros en estos comandos le indica a PowerShell que no aplique ningún filtro y recupere detalles para cada proceso.

PowerShell luego recopila datos detallados sobre cada proceso en ejecución. Estos datos incluyen varios atributos que describen el estado y las características de estos procesos.

PowerShell lo formatea en una tabla para su visualización. Este formato tabular está diseñado para presentar la información de manera clara y legible.

La tabla generalmente incluye varias columnas clave:

  1. Id: Esta columna muestra el Identificador de Proceso (PID), una etiqueta numérica única asignada a cada proceso. El PID es crucial para identificar y gestionar procesos específicos de manera única.
  2. ProcessName: Este es el nombre del archivo ejecutable que inició el proceso. Ayuda a reconocer fácilmente el proceso, especialmente para aplicaciones bien conocidas.
  3. CPU(s): Aquí vemos la cantidad de tiempo de CPU que el proceso ha consumido. Esto se mide en segundos y es vital para evaluar qué procesos están utilizando recursos significativos de la CPU, lo que podría impactar en el rendimiento del sistema.
  4. PM(K): Esto significa Paged Memory en Kilobytes. Representa el tamaño de la memoria que el proceso está utilizando y que puede paginarse en disco. Esta métrica es importante para monitorear el uso de memoria de los procesos, que es crucial para la optimización del rendimiento y la gestión de recursos.

Recuperar la información de un solo proceso

Al usar PowerShell para recuperar información sobre un proceso específico, tenemos un par de opciones de sintaxis. Tanto Get-Process -Name processName como Get-Process processName son válidos y logran el mismo resultado, pero difieren ligeramente en su estructura de sintaxis.

Get-Process -Name typora

O

Get-Process typora

Cuando ejecutamos Get-Process -Name typora o Get-Process typora, PowerShell filtra los procesos en ejecución y devuelve información específicamente para el proceso llamado typora. Esto es particularmente útil cuando conocemos el nombre exacto del proceso en el que estamos interesados.

Bajo el capó, PowerShell busca en la lista de todos los procesos y coincide el nombre del proceso con typora. Si el proceso está en ejecución, se muestran sus detalles.

Salida:

Obtener-Proceso -Nombre

Recuperar la información de múltiples procesos

Cuando usamos el cmdlet Get-Process en PowerShell para recuperar información sobre múltiples procesos, como en el comando Get-Process NotePad, Outlook, estamos aprovechando la capacidad de PowerShell para manejar múltiples elementos simultáneamente.

Get-Process NotePad, Outlook

Al ejecutar Get-Process NotePad, Outlook, le indicamos a PowerShell que obtenga detalles para múltiples procesos simultáneamente, en este caso, NotePad y Outlook. Este comando es útil cuando necesitamos monitorear varios procesos específicos.

PowerShell ejecuta una operación similar a la del comando de un solo proceso, pero para cada nombre de proceso especificado, mostrando todos los coincidencias.

Salida:

Obtener-Proceso Múltiple

Además, puedes usar caracteres comodín para el nombre del proceso.

Recuperar objetos de proceso con los atributos dados

Podemos mostrar la información del objeto de proceso para atributos específicos cuando sea necesario. Recuperemos solo el ID del Proceso para el proceso NotePad.

(Get-Process NotePad).Id

En el comando (Get-Process NotePad).Id, primero obtenemos el objeto de proceso para NotePad y luego accedemos a su propiedad Id. Esta técnica es útil cuando estamos interesados solo en información específica sobre un proceso, como su ID de Proceso.

Salida:

Recuperar objetos de proceso con los atributos dados

Además, podemos recuperar el atributo de tiempo de CPU para el proceso NotePad, como se muestra a continuación.

(Get-Process NotePad).CPU

Igualmente, (Get-Process NotePad).CPU recupera la información de uso de CPU para el proceso NotePad. Estos comandos demuestran cómo podemos extraer puntos de datos particulares de los objetos de proceso.

Salida:

getprocess cpu

Mostrar el propietario del proceso

La salida predeterminada del comando Get-Process no muestra el atributo ProcessOwner. Pero esto puede ser información valiosa cuando necesitas terminar un proceso determinado.

Podemos usar el parámetro -IncludeUserName para incluir el atributo ProcessOwner en la salida.

Get-Process -Name notepad -IncludeUserName

El comando Get-Process -Name notepad -IncludeUserName extiende el comportamiento predeterminado de Get-Process al incluir el nombre de usuario del propietario del proceso en la salida. El parámetro -IncludeUserName es esencial cuando necesitamos identificar qué usuario está ejecutando un proceso específico, que puede ser crítico en entornos de múltiples usuarios o para la resolución de problemas.

Este comando mejora nuestra visibilidad sobre los procesos, especialmente en lo que respecta a su propiedad.

Salida:

Obtener-Proceso IncluirNombreDeUsuario

Conclusión

Esta guía integral ha iluminado el poder y la versatilidad de PowerShell en la gestión y monitoreo de procesos del sistema. Hemos recorrido las aplicaciones prácticas del cmdlet Get-Process, comenzando desde listar todos los procesos en ejecución hasta identificar procesos específicos y profundizar en la extracción de atributos particulares de los procesos.

El artículo también mostró la destreza de PowerShell en el manejo de múltiples procesos simultáneamente y la facilidad de integrar información centrada en el usuario, como la propiedad del proceso.

Esta integración del cmdlet Get-Process subraya la robustez y adaptabilidad de PowerShell en el ámbito de la gestión de procesos, ofreciendo un espectro de herramientas para que los administradores de sistemas monitoreen, analicen y gestionen procesos de manera efectiva dentro de un entorno Windows.

¿Disfrutas de nuestros tutoriales? Suscríbete a DelftStack en YouTube para apoyarnos en la creación de más guías en vídeo de alta calidad. Suscríbete
Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.