Compartir a través de


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.