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 zostanie określony parametr Potwierdź .
Przykłady
Przykład 1. Zatrzymywanie wszystkich wystąpień procesu
PS C:\> Stop-Process -Name "notepad"
To polecenie zatrzymuje wszystkie wystąpienia procesu Notatnika na komputerze. Każde wystąpienie Notatnika jest uruchamiane we własnym procesie. Używa parametru Name do określenia procesów, z których wszystkie mają taką samą nazwę. Jeśli chcesz użyć parametru Id , aby zatrzymać te same procesy, musisz wyświetlić listę identyfikatorów procesów każdego wystąpienia Notatnika.
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 Notatnika. 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 formatowania do wyświetlania. Bez tego parametru nie będzie wyświetlany po Stop-Process
poleceniu.
Przykład 3. Zatrzymaj proces i wykryj, że 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 metody Get-Process
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-Process
obiektu .
Ostatnie polecenie pobiera wszystkie procesy na komputerze, na którym uruchomiono, ale są teraz zatrzymywane. Używa Get-Process
go do pobierania wszystkich procesów na komputerze. Operator potoku (|
) przekazuje wyniki do Where-Object
polecenia cmdlet, który 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 wymuszania , aby zatrzymać proces, który nie jest własnością użytkownika.
Pierwsze polecenie używa polecenia Get-Process
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 Administrator 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 wymuszenie 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 żadnego wyniku.
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
Do tego polecenia cmdlet można przekazać obiekt procesu.
Dane wyjściowe
None
Domyślnie to polecenie cmdlet nie zwraca żadnych danych wyjściowych.
W przypadku użycia parametru PassThru to polecenie cmdlet zwraca obiekt Process reprezentujący zatrzymany proces.
Uwagi
Program PowerShell zawiera następujące aliasy dla Stop-Process
programu :
- Wszystkie platformy:
spps
- W systemie Windows:
kill
W Windows PowerShell można również użyć właściwości i metod instrumentacji zarządzania Windows (WMI Win32_Process). 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.