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:
gpsps
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.