Compartir a través de


Get-Process

Obtiene los procesos que se ejecutan en el equipo local o en un equipo remoto.

Sintaxis

Name (valor predeterminado)

Get-Process
    [[-Name] <String[]>]
    [-ComputerName <String[]>]
    [-Module]
    [-FileVersionInfo]
    [<CommonParameters>]

NameWithUserName

Get-Process
    [[-Name] <String[]>]
    [-IncludeUserName]
    [<CommonParameters>]

IdWithUserName

Get-Process
    -Id <Int32[]>
    [-IncludeUserName]
    [<CommonParameters>]

Id

Get-Process
    -Id <Int32[]>
    [-ComputerName <String[]>]
    [-Module]
    [-FileVersionInfo]
    [<CommonParameters>]

InputObjectWithUserName

Get-Process
    -InputObject <Process[]>
    [-IncludeUserName]
    [<CommonParameters>]

InputObject

Get-Process
    -InputObject <Process[]>
    [-ComputerName <String[]>]
    [-Module]
    [-FileVersionInfo]
    [<CommonParameters>]

Description

El cmdlet Get-Process obtiene los procesos en un equipo local o remoto.

Sin parámetros, este cmdlet obtiene todos los procesos del equipo local. También puede especificar un proceso específico por nombre de proceso o identificador de proceso (PID) o canalizando un objeto System.Diagnostics.Process a este cmdlet.

De forma predeterminada, este cmdlet devuelve un objeto Process que tiene información detallada sobre el proceso y admite métodos que le permiten controlarlo. Con parámetros, puede cambiar el tipo de información devuelta por este cmdlet.

  • Módulo: recupere la información de cada módulo cargado en el proceso.
  • FileVersionInfo: recupere la información de la versión del archivo para el módulo principal del proceso.

Nota:

Un módulo es un archivo ejecutable o una biblioteca de vínculos dinámicos (DLL) cargado en un proceso. Un proceso tiene uno o varios módulos. El módulo principal es el módulo que se usa para iniciar inicialmente el proceso. Para obtener más información, vea ProcessModule (clase).

Ejemplos

Ejemplo 1: Obtener una lista de todos los procesos en ejecución en el equipo local

Get-Process

Este comando obtiene una lista de todos los procesos en ejecución en el equipo local. Para obtener una definición de cada columna para mostrar, consulte la sección NOTES .

Para ver todas las propiedades de un objeto Process , use Get-Process | Get-Member. De forma predeterminada, PowerShell muestra determinados valores de propiedad mediante unidades como kilobytes (K) y megabytes (M). Los valores reales cuando se accede a ellos con el operador de acceso a miembros (.) están en bytes.

Ejemplo 2: Mostrar información detallada sobre uno o varios procesos

Get-Process winword, explorer | Format-List *

Esta canalización muestra información detallada sobre los winword procesos y explorer en el equipo. Usa el parámetro Name para especificar los procesos, pero omite el nombre del parámetro opcional. El operador de canalización (|) canaliza los objetos Process al Format-List cmdlet , que muestra todas las propiedades disponibles (*) y sus valores para cada objeto.

También puede identificar los procesos por sus identificadores de proceso. Por ejemplo, Get-Process -Id 664, 2060.

Ejemplo 3: Obtener todos los procesos con un conjunto de trabajo mayor que un tamaño especificado

Get-Process | Where-Object { $_.WorkingSet -gt 20971520 }
Get-Process | Where-Object WorkingSet -GT 20MB

El Get-Process cmdlet devuelve los procesos en ejecución. La salida se canaliza al cmdlet , que selecciona los objetos con un valor WorkingSet superior a Where-Object 20 971 520 bytes.

En el primer ejemplo, Where-Object usa un scriptblock para comparar la propiedad WorkingSet de cada objeto Process . En el segundo ejemplo, el Where-Object cmdlet usa la sintaxis simplificada para comparar la propiedad WorkingSet . En este caso, -GT es un parámetro, no un operador de comparación. En el segundo ejemplo también se usa un sufijo literal numérico como alternativa concisa a 20971520. En PowerShell, MB representa un multiplicador de mebibyte (MiB). 20MB es igual a 20 971 520 bytes.

Ejemplo 4: Mostrar procesos en el equipo en grupos en función de la prioridad

$processes = Get-Process
$processes | Sort-Object { $_.PriorityClass } | Format-Table -View Priority

Estos comandos muestran los procesos en el equipo en grupos en función de su clase de prioridad. El primer comando obtiene todos los procesos del equipo y los almacena en la $processes variable .

El segundo comando canaliza los objetos Process almacenados en la $processes variable al Sort-Object cmdlet y, a continuación, al cmdlet , que da formato a Format-Table los procesos mediante la vista Prioridad .

La vista Prioridad y otras vistas se definen en los .ps1xml archivos de formato en el directorio principal de PowerShell ($PSHOME).

Ejemplo 5: Agregar una propiedad a la pantalla de salida predeterminada "Get-Process"

Get-Process -Name powershell | Format-Table -Property @(
    'Handles'
    @{ Name = 'NPM(K)'; Expression = { [int] ($_.NPM / 1KB) } }
    @{ Name = 'PM(K)';  Expression = { [int] ($_.PM / 1KB) } }
    @{ Name = 'WS(K)';  Expression = { [int] ($_.WS / 1KB) } }
    @{ Name = 'CPU(s)'; Expression = { if ($_.CPU) { $_.CPU.ToString('N') } } }
    'Id'
    @{ Name = 'SI'; Expression = 'SessionId' }
    'ProcessName'
    'StartTime'
) -AutoSize
Handles NPM(K) PM(K) WS(K) CPU(s)   Id SI ProcessName StartTime
------- ------ ----- ----- ------   -- -- ----------- ---------
    655     34 69424 83424 2.20   4240  1 powershell  4/14/2025 10:40:10 AM
    572     36 68768 57260 7.41   4968  1 powershell  4/13/2025 3:33:50 PM
    405     26 38144 30340 1.80   8776  1 powershell  4/14/2025 9:54:27 AM

En este ejemplo se recuperan los procesos del equipo local y se canaliza cada objeto Process al Format-Table cmdlet . Format-Table vuelve a crear la presentación de salida predeterminada de un objeto Process mediante una combinación de nombres de propiedad y propiedades calculadas. La pantalla incluye una propiedad StartTime adicional que no está presente en la pantalla predeterminada.

Ejemplo 6: Obtener información de versión para un proceso

Get-Process -Name powershell -FileVersionInfo
ProductVersion   FileVersion      FileName
--------------   -----------      --------
10.0.19041.320   10.0.19041.32... C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

Este comando usa el parámetro FileVersionInfo para obtener información de la versión del archivo para el módulo principal del powershell proceso. El módulo principal es el archivo que se usa para iniciar el proceso, que en este caso es powershell.exe.

Para usar este comando con procesos que no posee en Windows Vista y versiones posteriores de Windows, debe ejecutar PowerShell con derechos de usuario elevados (ejecutar como administrador).

Ejemplo 7: Obtención de módulos cargados con el proceso especificado

Get-Process -Name SQL* -Module

Este comando usa el parámetro Module para obtener los módulos cargados por todos los procesos con un nombre que comienza por SQL.

Para usar este comando con procesos que no posee en Windows Vista y versiones posteriores de Windows, debe ejecutar PowerShell con derechos de usuario elevados (ejecutar como administrador).

Ejemplo 8: Buscar el propietario de un proceso

Get-Process -Name powershell -IncludeUserName
Handles      WS(K)   CPU(s)     Id UserName            ProcessName
-------      -----   ------     -- --------            -----------
    782     132080     2.08   2188 DOMAIN01\user01     powershell
Get-CimInstance -ClassName Win32_Process -Filter "name='powershell.exe'" |
    Invoke-CimMethod -MethodName GetOwner
Domain   ReturnValue User   PSComputerName
------   ----------- ----   --------------
DOMAIN01           0 user01

El primer comando muestra cómo obtener el propietario de un proceso. El parámetro includeUserName requiere derechos de usuario elevados (Ejecutar como administrador). La salida revela que el propietario es DOMAIN01\user01.

La segunda canalización muestra una manera diferente de obtener el propietario de un proceso mediante Get-CimInstance y Invoke-CimMethod. La clase Win32_Process con un filtro recupera los powershell procesos y el método invocado GetOwner() devuelve información sobre el dominio y el usuario del proceso. Este método no requiere derechos de usuario elevados.

Ejemplo 9: Usar una variable automática para identificar el proceso que hospeda la sesión actual

Get-Process -Name powershell
Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
-------  ------    -----      -----     ------     --  -- -----------
    561      44    47564      40740       6.48   2604   1 powershell
    642      40    72040      24372      23.53   3576   1 powershel
Get-Process -Id $PID
Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
-------  ------    -----      -----     ------     --  -- -----------
    647      40    72464      30716      23.67   3576   1 powershell

Estos comandos muestran cómo usar la variable automática $PID para identificar el proceso que hospeda la sesión actual de PowerShell. Puede usar este método para distinguir el proceso de host de otros powershell procesos que puede querer controlar.

El primer comando obtiene todos los powershell procesos en ejecución. El segundo comando obtiene el powershell proceso que hospeda la sesión actual.

Ejemplo 10: Obtener todos los procesos que tienen un título de ventana principal y mostrarlos en una tabla

Get-Process |
    Where-Object -Property MainWindowTitle |
    Format-Table -Property Id, Name, MainWindowTitle -AutoSize

Esta canalización obtiene todos los procesos que tienen un título de ventana principal y los muestra en una tabla con el identificador y el nombre del proceso.

MainWindowTitle es una de las muchas propiedades útiles del tipo de objeto Diagnostics.Process que Get-Process devuelve. Para ver todas las propiedades, use Get-Process | Get-Member.

Parámetros

-ComputerName

Especifica los equipos para los que este cmdlet ejecuta procesos. El valor predeterminado es el equipo local.

Especifique el nombre netBIOS, una dirección IP o un nombre de dominio completo (FQDN) de uno o varios equipos. Para especificar el equipo local, use el nombre del equipo, un punto (.) o localhost.

Este parámetro no se basa en la comunicación remota de Windows PowerShell. Puede usar el parámetro ComputerName de este cmdlet incluso si el equipo no está configurado para ejecutar comandos remotos.

Propiedades de parámetro

Tipo:

String[]

Valor predeterminado:Local computer
Admite caracteres comodín:False
DontShow:False
Alias:CN

Conjuntos de parámetros

Name
Posición:Named
Obligatorio:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:True
Valor de los argumentos restantes:False
Id
Posición:Named
Obligatorio:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:True
Valor de los argumentos restantes:False
InputObject
Posición:Named
Obligatorio:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:True
Valor de los argumentos restantes:False

-FileVersionInfo

Indica que este cmdlet obtiene la información de la versión del archivo para el programa que se ejecuta en el proceso.

En Windows Vista y versiones posteriores de Windows, debe ejecutar PowerShell con derechos de usuario elevados (ejecutar como administrador) para usar este parámetro en los procesos que no posee.

No puede usar los parámetros FileVersionInfo y ComputerName juntos.

Para obtener información de versión de archivo para un proceso en un equipo remoto, use el cmdlet Invoke-Command.

El uso de este parámetro es el mismo que el acceso a la propiedad MainModule.FileVersionInfo de cada objeto Process . Cuando se usa este parámetro, Get-Process devuelve un objeto FileVersionInfo , no un objeto Process . No se puede canalizar la salida generada mediante este parámetro a un cmdlet que espera un objeto Process , como Stop-Process.

Propiedades de parámetro

Tipo:SwitchParameter
Valor predeterminado:False
Admite caracteres comodín:False
DontShow:False
Alias:FV, FVI

Conjuntos de parámetros

Name
Posición:Named
Obligatorio:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False
Id
Posición:Named
Obligatorio:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False
InputObject
Posición:Named
Obligatorio:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-Id

Especifica uno o varios procesos por identificador de proceso (PID). Puede especificar varios identificadores separados por comas. Para obtener el PID de un proceso, use Get-Process. Para obtener el PID de la sesión actual de PowerShell, use $PID.

Propiedades de parámetro

Tipo:

Int32[]

Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False
Alias:PID

Conjuntos de parámetros

IdWithUserName
Posición:Named
Obligatorio:True
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:True
Valor de los argumentos restantes:False
Id
Posición:Named
Obligatorio:True
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:True
Valor de los argumentos restantes:False

-IncludeUserName

Indica que este comando agrega una propiedad UserName a cada objeto Process devuelto.

Debe ejecutar PowerShell con derechos de usuario elevados (ejecutar como administrador) para usar este parámetro.

Propiedades de parámetro

Tipo:SwitchParameter
Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

NameWithUserName
Posición:Named
Obligatorio:True
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False
IdWithUserName
Posición:Named
Obligatorio:True
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False
InputObjectWithUserName
Posición:Named
Obligatorio:True
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-InputObject

Especifica uno o varios objetos Process . Use una variable que contenga los objetos, o un comando o expresión que obtiene los objetos.

Propiedades de parámetro

Tipo:

Process[]

Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

InputObjectWithUserName
Posición:Named
Obligatorio:True
Valor de la canalización:True
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False
InputObject
Posición:Named
Obligatorio:True
Valor de la canalización:True
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-Module

Indica que este cmdlet obtiene los módulos que el proceso ha cargado.

En Windows Vista y versiones posteriores de Windows, debe ejecutar PowerShell con derechos de usuario elevados (ejecutar como administrador) para usar este parámetro en los procesos que no posee.

Para obtener los módulos cargados por un proceso en un equipo remoto, use el Invoke-Command cmdlet .

El uso de este parámetro es el mismo que el acceso a la propiedad Modules de cada objeto Process . Cuando se usa este parámetro, Get-Process devuelve un objeto ProcessModule , no un objeto Process . No se puede canalizar la salida generada mediante este parámetro a un cmdlet que espera un objeto Process , como Stop-Process.

Cuando se usan los parámetros Module y FileVersionInfo juntos, este cmdlet devuelve un objeto FileVersionInfo con información sobre la versión de archivo de todos los módulos.

Propiedades de parámetro

Tipo:SwitchParameter
Valor predeterminado:False
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

Name
Posición:Named
Obligatorio:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False
Id
Posición:Named
Obligatorio:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False
InputObject
Posición:Named
Obligatorio:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-Name

Especifica uno o varios procesos por nombre de proceso. Puede especificar varios nombres de proceso separados por comas y usar caracteres comodín. El uso del -Name parámetro es opcional.

Propiedades de parámetro

Tipo:

String[]

Valor predeterminado:None
Admite caracteres comodín:True
DontShow:False
Alias:ProcessName

Conjuntos de parámetros

Name
Posición:0
Obligatorio:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:True
Valor de los argumentos restantes:False
NameWithUserName
Posición:0
Obligatorio:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:True
Valor de los argumentos restantes:False

CommonParameters

Este cmdlet admite los parámetros comunes: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction y -WarningVariable. Para obtener más información, vea about_CommonParameters.

Entradas

Process

Puede canalizar objetos Process a este cmdlet.

Salidas

Process

De forma predeterminada, este cmdlet devuelve un objeto System.Diagnostics.Process.

FileVersionInfo

Si usa el parámetro FileVersionInfo , este cmdlet devuelve un objeto System.Diagnostics.FileVersionInfo .

ProcessModule

Si usa el parámetro Module , sin el parámetro FileVersionInfo , este cmdlet devuelve un objeto System.Diagnostics.ProcessModule .

Notas

Windows PowerShell incluye los siguientes alias para Get-Process:

  • gps
  • ps

En equipos que ejecutan Windows de 64 bits, la versión de 64 bits de PowerShell obtiene el módulo principal y los módulos de proceso de 64 bits. La versión de 32 bits de PowerShell solo obtiene módulos de proceso de 32 bits.

Advertencia

Cuando se usa Get-Process para obtener un proceso de 64 bits en la versión de 32 bits de PowerShell, las propiedades como Path y MainModule del objeto Process devuelto son $null. Debe usar la versión de 64 bits de PowerShell o la clase Win32_Process .

Para obtener información del proceso desde un equipo remoto, use el cmdlet Invoke-Command. Para obtener más información, vea Invoke-Command.

Puede usar la clase instrumental de administración de Windows (WMI) Win32_Process en PowerShell como alternativa a Get-Process. Para obtener más información, consulte:

La presentación predeterminada de un objeto Process es una vista de tabla que incluye las columnas siguientes.

  • Controla: número de identificadores que el proceso ha abierto.
  • NPM(K): la cantidad de memoria no paginada que usa el proceso, en kilobytes.
  • PM(K): la cantidad de memoria paginable que usa el proceso, en kilobytes.
  • WS(K): el tamaño del conjunto de trabajo del proceso, en kilobytes. El conjunto de trabajo consta de las páginas de memoria a las que hace referencia recientemente el proceso.
  • CPU: la cantidad de tiempo de procesador que el proceso ha usado en todos los procesadores, en segundos.
  • id.: el identificador de proceso (PID) del proceso.
  • SI: el identificador de sesión del proceso.
  • ProcessName: el nombre del proceso.

Puede usar las vistas alternativas integradas para los objetos Process disponibles con Format-Table, como StartTime y Priority. También puede diseñar sus propias vistas.

Para obtener una descripción de todos los miembros del objeto Process disponibles, vea Propiedades de proceso y Métodos de proceso.