Stop-Process

Zatrzymuje co najmniej jeden uruchomiony proces.

Składnia

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

Opis

Polecenie Stop-Process cmdlet zatrzymuje co najmniej jeden uruchomiony proces. Proces można określić według nazwy procesu lub identyfikatora procesu (PID) lub przekazać obiekt procesu do Stop-Process. Stop-Process działa tylko w przypadku procesów uruchomionych na komputerze lokalnym.

W systemie Windows Vista i nowszych wersjach systemu operacyjnego Windows, aby zatrzymać proces, który nie jest własnością bieżącego użytkownika, należy uruchomić program PowerShell przy użyciu opcji Uruchom jako administrator. Ponadto nie zostanie wyświetlony monit o potwierdzenie, chyba że określisz parametr Confirm .

Przykłady

Przykład 1. Zatrzymanie wszystkich wystąpień procesu

PS C:\> Stop-Process -Name "notepad"

To polecenie zatrzymuje wszystkie wystąpienia procesu Notatnik na komputerze. Każde wystąpienie Notatnik działa we własnym procesie. Używa parametru Name do określenia procesów, z których wszystkie mają taką samą nazwę. Jeśli używasz parametru Id, aby zatrzymać te same procesy, musisz wyświetlić listę identyfikatorów procesów każdego wystąpienia Notatnik.

Przykład 2. Zatrzymanie określonego wystąpienia procesu

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

To polecenie zatrzymuje określone wystąpienie procesu Notatnik. Używa identyfikatora procesu 3952, aby zidentyfikować proces. Parametr Confirm przekierowuje program PowerShell, aby wyświetlić monit przed zatrzymanie procesu. Ponieważ monit zawiera nazwę procesu oprócz jego identyfikatora, jest to najlepsze rozwiązanie. Parametr PassThru przekazuje obiekt procesu do obiektu formatującego do wyświetlania. Bez tego parametru nie będzie wyświetlania po poleceniu Stop-Process .

Przykład 3. Zatrzymanie procesu i wykrycie, że proces został zatrzymany

calc
$p = Get-Process -Name "calc"
Stop-Process -InputObject $p
Get-Process | Where-Object {$_.HasExited}

Ta seria poleceń uruchamia i zatrzymuje Calc proces, a następnie wykrywa procesy, które zostały zatrzymane.

Pierwsze polecenie uruchamia wystąpienie kalkulatora.

Drugie polecenie używa Get-Process metody pobiera obiekt reprezentujący Calc proces, a następnie zapisuje go w zmiennej $p .

Trzecie polecenie zatrzymuje Calc proces. Używa parametru InputObject , aby przekazać obiekt do Stop-Processobiektu .

Ostatnie polecenie pobiera wszystkie procesy na komputerze, na którym były uruchomione, ale są teraz zatrzymane. Używa Get-Process go do pobierania wszystkich procesów na komputerze. Operator potoku (|) przekazuje wyniki do Where-Object polecenia cmdlet, które wybiera te, w których wartość właściwości HasExited jest $True. HasExited to tylko jedna właściwość obiektów procesu. Aby znaleźć wszystkie właściwości, wpisz Get-Process | Get-Member.

Przykład 4. Zatrzymywanie procesu, który nie jest własnością bieżącego użytkownika

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>

Te polecenia pokazują efekt użycia polecenia Force w celu zatrzymania procesu, który nie jest własnością użytkownika.

Pierwsze polecenie używa Get-Process polecenia do pobrania procesu Lsass. Operator potoku wysyła proces, aby Stop-Process go zatrzymać. Jak pokazano w przykładowych danych wyjściowych, pierwsze polecenie kończy się niepowodzeniem z komunikatem Odmowa dostępu, ponieważ ten proces można zatrzymać tylko przez członka grupy Administracja istrator na komputerze.

Gdy program PowerShell zostanie otwarty przy użyciu opcji Uruchom jako administrator, a polecenie zostanie powtórzone, program PowerShell wyświetli monit o potwierdzenie.

Drugie polecenie określa wymuszanie pomijania wiersza polecenia. W związku z tym proces zostanie zatrzymany bez potwierdzenia.

Parametry

-Confirm

Monituje o potwierdzenie przed uruchomieniem polecenia cmdlet.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Force

Zatrzymuje określone procesy bez monitowania o potwierdzenie. Domyślnie Stop-Process monituje o potwierdzenie przed zatrzymaniem jakiegokolwiek procesu, który nie jest własnością bieżącego użytkownika.

Aby znaleźć właściciela procesu, użyj Get-CimInstance polecenia cmdlet , aby uzyskać obiekt Win32_Process reprezentujący proces, a następnie użyć metody GetOwner obiektu.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Id

Określa identyfikatory procesów do zatrzymania. Aby określić wiele identyfikatorów, użyj przecinków, aby oddzielić identyfikatory. Aby znaleźć identyfikator PID procesu, wpisz Get-Process.

Type:Int32[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-InputObject

Określa obiekty procesu do zatrzymania. Wprowadź zmienną zawierającą obiekty lub wpisz polecenie lub wyrażenie, które pobiera obiekty.

Type:Process[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Name

Określa nazwy procesów do zatrzymania. Można wpisać wiele nazw procesów, rozdzielonych przecinkami lub użyć symboli wieloznacznych.

Type:String[]
Aliases:ProcessName
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:True

-PassThru

Zwraca obiekt reprezentujący proces. Domyślnie to polecenie cmdlet nie generuje żadnych danych wyjściowych.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

Pokazuje, co się stanie po uruchomieniu polecenia cmdlet. Polecenie cmdlet nie zostało uruchomione.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Dane wejściowe

Process

Do tego polecenia cmdlet można przekazać obiekt procesu.

Dane wyjściowe

None

Domyślnie to polecenie cmdlet nie zwraca żadnych danych wyjściowych.

Process

Jeśli używasz parametru PassThru , to polecenie cmdlet zwraca obiekt Procesu reprezentujący zatrzymany proces.

Uwagi

Program PowerShell zawiera następujące aliasy dla programu Stop-Process:

  • Wszystkie platformy:
    • spps
  • Windows:
    • kill

Można również użyć właściwości i metod obiektu instrumentacji zarządzania Windows (WMI) Win32_Process w programie Windows PowerShell. Aby uzyskać więcej informacji, zobacz Get-CimInstance i zestaw WMI SDK.

  • Podczas zatrzymywania procesów należy pamiętać, że zatrzymanie procesu może zatrzymać proces i usługi, które zależą od procesu. W skrajnym przypadku zatrzymanie procesu może zatrzymać system Windows.