Stop-Process
Detiene uno o más procesos en ejecución.
Syntax
Stop-Process
[-Id] <Int32[]>
[-PassThru]
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Stop-Process
-Name <String[]>
[-PassThru]
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Stop-Process
[-InputObject] <Process[]>
[-PassThru]
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
El Stop-Process
cmdlet 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 sea 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 .
Ejemplos
Ejemplo 1: Detener todas las instancias de un proceso
PS C:\> Stop-Process -Name "notepad"
Este comando detiene todas las instancias del proceso de Bloc de notas del 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 usara el parámetro Id 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
PS C:\> 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 de Bloc de notas. Usa el identificador de proceso 3952 para identificar el proceso. El parámetro Confirm le dirige a PowerShell para solicitarle antes de que detenga el proceso. Dado que el símbolo del sistema incluye el nombre del proceso además de su identificador, este es el procedimiento recomendado.
El parámetro PassThru pasa el objeto de proceso al formateador para su presentación. Sin este parámetro, no habría ninguna presentación después de un Stop-Process
comando.
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 Calc
proceso 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 Calc
proceso y, a continuación, lo almacena en la $p
variable .
El tercer comando detiene el Calc
proceso. Usa el parámetro InputObject para pasar el objeto a Stop-Process
.
El último comando obtiene todos los procesos en el equipo que se estaban ejecutando pero que ahora están detenidos. Get-Process
Usa 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 está $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
[ADMIN]: PS>
Estos comandos muestran el efecto de usar Force 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 para Stop-Process
detenerlo. Como se muestra en la salida de ejemplo, se produce un error en el primer comando con un mensaje de acceso denegado, ya que este proceso solo puede ser detenido 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 pide confirmación.
El segundo comando especifica Force para suprimir el símbolo del sistema. Como resultado, el proceso se detiene sin confirmación.
Parámetros
-Confirm
Le solicita su confirmación antes de ejecutar el cmdlet.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 Get-CimInstance
cmdlet para obtener un objeto Win32_Process que representa el proceso y, a continuación, use el método GetOwner del objeto .
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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
.
Type: | Int32[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-InputObject
Especifica los objetos de proceso que se van a detener. Especifique una variable que contenga los objetos o escriba un comando o una expresión que obtenga los objetos.
Type: | Process[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | 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.
Type: | String[] |
Aliases: | ProcessName |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-PassThru
Devuelve un objeto que representa el proceso. De forma predeterminada, este cmdlet no genera ningún resultado.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
Muestra lo que sucedería si se ejecutara el cmdlet. El cmdlet no se ejecuta.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Entradas
Puede canalizar un objeto de proceso a este cmdlet.
Salidas
None
De forma predeterminada, este cmdlet no devuelve ninguna salida.
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 puedes usar las propiedades y los 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 los casos más extremos, podría detenerse Windows al detener un proceso.