Compartir a través de


Stop-Process

Detiene uno o más procesos en ejecución.

Sintaxis

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

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 tuviera que usar 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 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 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 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
[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 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 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.

Tipo:SwitchParameter
Alias:cf
Posición:Named
Valor predeterminado:False
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín: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 .

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín: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.

Tipo:Int32[]
Posición:0
Valor predeterminado:None
Requerido:True
Aceptar entrada de canalización:True
Aceptar caracteres comodín: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.

Tipo:Process[]
Posición:0
Valor predeterminado:None
Requerido:True
Aceptar entrada de canalización:True
Aceptar caracteres comodín: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.

Tipo:String[]
Alias:ProcessName
Posición:Named
Valor predeterminado:None
Requerido:True
Aceptar entrada de canalización:True
Aceptar caracteres comodín:True

-PassThru

Devuelve un objeto que representa el proceso. De forma predeterminada, este cmdlet no genera ningún resultado.

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-WhatIf

Muestra lo que sucedería si se ejecutara el cmdlet. El cmdlet no se ejecuta.

Tipo:SwitchParameter
Alias:wi
Posición:Named
Valor predeterminado:False
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

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