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 cmdlet
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 Potwierdź.
Przykłady
Przykład 1. Zatrzymanie 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 w celu 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 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 w celu wyświetlenia monitu przed zatrzymanie procesu. Ponieważ monit zawiera nazwę procesu oprócz identyfikatora, najlepszym rozwiązaniem jest to. Parametr PassThru przekazuje obiekt procesu do obiektu formatującego do wyświetlania. Bez tego parametru nie będzie wyświetlany po polecenia Stop-Process.
Przykład 3. Zatrzymanie procesu i wykrycie, że proces został zatrzymany
PS C:\> calc
PS C:\> $p = Get-Process -Name "calc"
PS C:\> Stop-Process -InputObject $p
PS C:\> Get-Process | Where-Object {$_.HasExited}
Ta seria poleceń uruchamia i zatrzymuje proces obliczania, a następnie wykrywa procesy, które zostały zatrzymane.
Pierwsze polecenie uruchamia wystąpienie kalkulatora.
Drugie polecenie używa Get-Process pobiera obiekt reprezentujący proces obliczania, a następnie zapisuje go w zmiennej $p.
Trzecie polecenie zatrzymuje proces obliczania. Używa on parametru InputObject, aby przekazać obiekt do Stop-Process .
Ostatnie polecenie pobiera wszystkie procesy na komputerze, na którym były uruchomione, ale są teraz zatrzymane.
Używa get-process, aby pobrać wszystkie procesy na komputerze.
Operator potoku (|) przekazuje wyniki do polecenia cmdlet Where-Object, które wybiera te, w których wartość właściwości HasExited jest $True.
HasExited jest tylko jedną właściwością 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 C:\> 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 C:\> 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 C:\> Get-Process -Name "lsass" | Stop-Process -Force
[ADMIN]: PS C:\>
Te polecenia pokazują efekt użycia Force, aby zatrzymać proces, który nie jest własnością użytkownika.
Pierwsze polecenie używa Get-Process, aby uzyskać proces Lsasss. Operator potoku wysyła proces, aby zatrzymać proces. 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 Wymuszanie pomijanie wiersza polecenia. W związku z tym proces zostanie zatrzymany bez potwierdzenia.
Parametry
-Confirm
Monituje o potwierdzenie przed uruchomieniem polecenia cmdlet.
Typ: | SwitchParameter |
Aliasy: | cf |
Position: | Named |
Domyślna wartość: | False |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | 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 polecenia cmdlet Get-WmiObject, aby uzyskać obiekt Win32_Process reprezentujący proces, a następnie użyć metody GetOwner obiektu.
Typ: | SwitchParameter |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | 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
.
Typ: | Int32[] |
Position: | 0 |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | True |
Akceptowanie symboli wieloznacznych: | False |
-InputObject
Określa obiekty procesu do zatrzymania. Wprowadź zmienną zawierającą obiekty lub wpisz polecenie lub wyrażenie, które pobiera obiekty.
Typ: | Process[] |
Position: | 0 |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | True |
Akceptowanie symboli wieloznacznych: | False |
-Name
Określa nazwy procesów do zatrzymania. Można wpisać wiele nazw procesów, rozdzielonych przecinkami lub użyć symboli wieloznacznych.
Typ: | String[] |
Aliasy: | ProcessName |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | True |
Akceptowanie symboli wieloznacznych: | True |
-PassThru
Zwraca obiekt reprezentujący proces. Domyślnie to polecenie cmdlet nie generuje żadnych danych wyjściowych.
Typ: | SwitchParameter |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-WhatIf
Pokazuje, co się stanie, jeśli polecenie cmdlet zostanie uruchomione. Polecenie cmdlet nie jest uruchamiane.
Typ: | SwitchParameter |
Aliasy: | wi |
Position: | Named |
Domyślna wartość: | False |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
Dane wejściowe
Do tego polecenia cmdlet można przekazać obiekt procesu.
Dane wyjściowe
None, System.Diagnostics.Process
To polecenie cmdlet zwraca obiekt System.Diagnostics.Process reprezentujący zatrzymany proces, jeśli określisz parametr PassThru. W przeciwnym razie to polecenie cmdlet nie generuje żadnych danych wyjściowych.
Uwagi
Możesz również odwołać się do
Stop-Process za pomocą wbudowanych aliasów, kill ispps . Aby uzyskać więcej informacji, zobacz about_Aliases.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-WmiObject 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.