Compartir a través de


Get-Process

Obtiene los procesos que se ejecutan en el equipo local.

Sintaxis

Name (Es el valor predeterminado).

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

NameWithUserName

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

Id

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

IdWithUserName

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

InputObject

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

InputObjectWithUserName

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

Description

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

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 .

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

Get-Process -Name pwsh | Format-Table -Property @(
    @{ Name = 'NPM(K)'; Expression = { [int] ($_.NPM / 1KB) } }
    @{ Name = 'PM(M)';  Expression = { [int] ($_.PM / 1MB) } }
    @{ Name = 'WS(M)';  Expression = { [int] ($_.WS / 1MB) } }
    @{ Name = 'CPU(s)'; Expression = { if ($_.CPU) { $_.CPU.ToString('N') } } }
    'Id'
    @{ Name = 'SI'; Expression = 'SessionId' }
    'ProcessName'
    'StartTime'
) -AutoSize
NPM(K) PM(M) WS(M) CPU(s)   Id SI ProcessName StartTime
------ ----- ----- ------   -- -- ----------- ---------
    84    46    79 18.297 3188  1 pwsh        4/14/2025 10:40:10 AM
    66    30    90 4.328  4640  1 pwsh        4/13/2025 3:33:50 PM
    66    30    90 4.516  9204  1 pwsh        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 pwsh -FileVersionInfo
ProductVersion   FileVersion      FileName
--------------   -----------      --------
7.5.0 SHA: 99da… 7.5.0.500        C:\Program Files\PowerShell\7\pwsh.exe

Este comando usa el parámetro FileVersionInfo para obtener información de la versión del archivo para el módulo principal del pwsh proceso. El módulo principal es el archivo que se usa para iniciar el proceso, que en este caso es pwsh.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 pwsh -IncludeUserName
WS(M)   CPU(s)      Id UserName                       ProcessName
-----   ------      -- --------                       -----------
46.53    21.70    3188 DOMAIN01\user01                pwsh
Get-CimInstance -ClassName Win32_Process -Filter "name='pwsh.exe'" |
    Invoke-CimMethod -MethodName GetOwner
Domain   ReturnValue User   PSComputerName
------   ----------- ----   --------------
DOMAIN01           0 user01

El primer comando muestra cómo obtener el propietario de un proceso. 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 pwsh procesos y el método invocado GetOwner() devuelve información sobre el dominio y el usuario del proceso. Este método solo está disponible en Windows y 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 pwsh
NPM(K)    PM(M)      WS(M)     CPU(s)      Id  SI ProcessName
------    -----      -----     ------      --  -- -----------
    83    96.21     105.95       4.33    1192  10 pwsh
    79    83.81     117.61       2.16   10580  10 pwsh
Get-Process -Id $PID
NPM(K)    PM(M)      WS(M)     CPU(s)      Id  SI ProcessName
------    -----      -----     ------      --  -- -----------
    83    96.21      77.53       4.39    1192  10 pwsh

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 pwsh procesos que puede querer controlar.

El primer comando obtiene todos los pwsh procesos en ejecución. El segundo comando obtiene el pwsh 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

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

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 del 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
Mandatory: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
Mandatory: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
Mandatory: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 del parámetro

Tipo:

Int32[]

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

Conjuntos de parámetros

Id
Posición:Named
Mandatory:True
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:True
Valor de los argumentos restantes:False
IdWithUserName
Posición:Named
Mandatory: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.

Propiedades del parámetro

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

Conjuntos de parámetros

NameWithUserName
Posición:Named
Mandatory: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
Mandatory: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
Mandatory: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 del parámetro

Tipo:

Process[]

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

Conjuntos de parámetros

InputObject
Posición:Named
Mandatory:True
Valor de la canalización:True
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False
InputObjectWithUserName
Posición:Named
Mandatory: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.

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 del parámetro

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

Conjuntos de parámetros

Name
Posición:Named
Mandatory: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
Mandatory: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
Mandatory: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 del parámetro

Tipo:

String[]

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

Conjuntos de parámetros

Name
Posición:0
Mandatory: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
Mandatory: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

PowerShell incluye los siguientes alias para Get-Process:

  • Todas las plataformas:
    • gps
  • Windows:
    • 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.

En Windows, 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.

  • NPM(K): la cantidad de memoria no paginada que usa el proceso, en kilobytes.
  • PM(M):la cantidad de memoria paginable que usa el proceso, en megabytes.
  • WS(M):tamaño del conjunto de trabajo del proceso, en megabytes. 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.