Stop-Process
Detiene uno o varios procesos en ejecución.
Sintaxis
Id (Es el valor predeterminado).
Stop-Process
[-Id] <Int32[]>
[-PassThru]
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Name
Stop-Process
-Name <String[]>
[-PassThru]
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
InputObject
Stop-Process
[-InputObject] <Process[]>
[-PassThru]
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
El cmdlet Stop-Process detiene uno o varios procesos en ejecución. Puede especificar un proceso por nombre de proceso o identificador de proceso (PID) o pasar un objeto de proceso a Stop-Process.
Stop-Process solo funciona en procesos que se ejecutan en el equipo local.
En Windows Vista y versiones posteriores del sistema operativo Windows, para detener un proceso que no es propiedad del usuario actual, debe iniciar PowerShell mediante la opción Ejecutar como administrador. Además, no se le pedirá confirmación a menos que especifique el parámetro confirm Confirm.
Ejemplos
Ejemplo 1: Detener todas las instancias de un proceso
Stop-Process -Name "notepad"
Este comando detiene todas las instancias del proceso del Bloc de notas en el equipo. Cada instancia del Bloc de notas se ejecuta en su propio proceso. Usa el parámetro Name para especificar los procesos, todos los cuales tienen el mismo nombre. Si tuviera que usar el parámetro id. de para detener los mismos procesos, tendría que enumerar los identificadores de proceso de cada instancia del Bloc de notas.
Ejemplo 2: Detener una instancia específica de un proceso
Stop-Process -Id 3952 -Confirm -PassThru
Confirm
Are you sure you want to perform this action?
Performing operation "Stop-Process" on Target "notepad (3952)".
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help
(default is "Y"):y
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
41 2 996 3212 31 3952 notepad
Este comando detiene una instancia determinada del proceso del Bloc de notas. Usa el identificador de proceso, 3952, para identificar el proceso. El parámetro Confirm dirige PowerShell para que le pida antes de que detenga el proceso. Dado que el mensaje incluye el nombre del proceso además de su identificador, se recomienda este procedimiento.
El parámetro PassThru pasa el objeto de proceso al formateador para mostrarlo. Sin este parámetro, no habría ninguna presentación después de un comando Stop-Process.
Ejemplo 3: Detener un proceso y detectar que se ha detenido
calc
$p = Get-Process -Name "calc"
Stop-Process -InputObject $p
Get-Process | Where-Object {$_.HasExited}
Esta serie de comandos inicia y detiene el proceso de Calc y, a continuación, detecta los procesos que se han detenido.
El primer comando inicia una instancia de la calculadora.
El segundo comando usa Get-Process obtiene un objeto que representa el proceso de Calc y, a continuación, lo almacena en la variable $p.
El tercer comando detiene el proceso de Calc. Usa el parámetro InputObject para pasar el objeto a Stop-Process.
El último comando obtiene todos los procesos del equipo que se estaban ejecutando, pero que ahora están detenidos. Usa Get-Process para obtener todos los procesos del equipo. El operador de canalización (|) pasa los resultados al Where-Object cmdlet , que selecciona los que el valor de la propiedad HasExited es $true.
HasExited es solo una propiedad de objetos de proceso. Para buscar todas las propiedades, escriba Get-Process | Get-Member.
Ejemplo 4: Detener un proceso no propiedad del usuario actual
PS> Get-Process -Name "lsass" | Stop-Process
Stop-Process : Cannot stop process 'lsass (596)' because of the following error: Access is denied
At line:1 char:34
+ Get-Process -Name "lsass" | Stop-Process <<<<
[ADMIN]: PS> Get-Process -Name "lsass" | Stop-Process
Warning!
Are you sure you want to perform this action?
Performing operation 'Stop-Process' on Target 'lsass(596)'
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"):
[ADMIN]: PS> Get-Process -Name "lsass" | Stop-Process -Force
Estos comandos muestran el efecto de usar Forzar para detener un proceso que no es propiedad del usuario.
El primer comando usa Get-Process para obtener el proceso de Lsass. Un operador de canalización envía el proceso a Stop-Process para detenerlo. Como se muestra en la salida de ejemplo, se produce un error en el primer comando con un mensaje acceso denegado, ya que este proceso solo se puede detener por un miembro del grupo Administrador en el equipo.
Cuando PowerShell se abre mediante la opción Ejecutar como administrador y se repite el comando, PowerShell le pedirá confirmación.
El segundo comando especifica Forzar para suprimir el símbolo del sistema. Como resultado, el proceso se detiene sin confirmación.
Parámetros
-Confirm
Le pide confirmación antes de ejecutar el cmdlet.
Propiedades del parámetro
| Tipo: | SwitchParameter |
| Valor predeterminado: | False |
| Admite caracteres comodín: | False |
| DontShow: | False |
| Alias: | cf |
Conjuntos de parámetros
(All)
| 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 |
-Force
Detiene los procesos especificados sin pedir confirmación. De forma predeterminada, Stop-Process solicita confirmación antes de detener cualquier proceso que no sea propiedad del usuario actual.
Para buscar el propietario de un proceso, use el cmdlet Get-CimInstance para obtener un objeto Win32_Process que representa el proceso y, a continuación, use el método GetOwner del objeto.
Propiedades del parámetro
| Tipo: | SwitchParameter |
| Valor predeterminado: | None |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
(All)
| 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 los identificadores de proceso de los procesos que se van a detener. Para especificar varios identificadores, use comas para separar los identificadores. Para buscar el PID de un proceso, escriba Get-Process.
Propiedades del parámetro
| Tipo: | Int32[] |
| Valor predeterminado: | None |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
Id
| Posición: | 0 |
| Mandatory: | True |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | True |
| Valor de los argumentos restantes: | False |
-InputObject
Especifica los objetos de proceso que se van a detener. Escriba una variable que contenga los objetos, o escriba un comando o expresión que obtenga 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: | 0 |
| Mandatory: | True |
| Valor de la canalización: | True |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
-Name
Especifica los nombres de proceso de los procesos que se van a detener. Puede escribir varios nombres de proceso, separados por comas o usar caracteres comodín.
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: | 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 |
-PassThru
Devuelve un objeto que representa el proceso. De forma predeterminada, este cmdlet no genera ninguna salida.
Propiedades del parámetro
| Tipo: | SwitchParameter |
| Valor predeterminado: | None |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
(All)
| 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 |
-WhatIf
Muestra lo que sucedería si el cmdlet se ejecuta. El cmdlet no se ejecuta.
Propiedades del parámetro
| Tipo: | SwitchParameter |
| Valor predeterminado: | False |
| Admite caracteres comodín: | False |
| DontShow: | False |
| Alias: | Wi |
Conjuntos de parámetros
(All)
| 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 |
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 un objeto de proceso a este cmdlet.
Salidas
None
De forma predeterminada, este cmdlet no devuelve ninguna salida.
Process
Cuando se usa el parámetro PassThru, este cmdlet devuelve un objeto process que representa el proceso detenido.
Notas
PowerShell incluye los siguientes alias para Stop-Process:
- Todas las plataformas:
spps
- Windows:
kill
También puede usar las propiedades y métodos del objeto Instrumental de administración de Windows (WMI) Win32_Process en Windows PowerShell. Para obtener más información, consulte Get-CimInstance y el SDK de WMI.
- Al detener procesos, tenga en cuenta que detener un proceso puede detener el proceso y los servicios que dependen del proceso. En un caso extremo, detener un proceso puede detener Windows.