Get-Process
Pobiera procesy uruchomione na komputerze lokalnym lub komputerze zdalnym.
Składnia
Get-Process
[[-Name] <String[]>]
[-ComputerName <String[]>]
[-Module]
[-FileVersionInfo]
[<CommonParameters>]
Get-Process
[[-Name] <String[]>]
[-IncludeUserName]
[<CommonParameters>]
Get-Process
-Id <Int32[]>
[-IncludeUserName]
[<CommonParameters>]
Get-Process
-Id <Int32[]>
[-ComputerName <String[]>]
[-Module]
[-FileVersionInfo]
[<CommonParameters>]
Get-Process
-InputObject <Process[]>
[-IncludeUserName]
[<CommonParameters>]
Get-Process
-InputObject <Process[]>
[-ComputerName <String[]>]
[-Module]
[-FileVersionInfo]
[<CommonParameters>]
Opis
Polecenie Get-Process
cmdlet pobiera procesy na komputerze lokalnym lub zdalnym.
Bez parametrów to polecenie cmdlet pobiera wszystkie procesy na komputerze lokalnym. Można również określić określony proces według nazwy procesu lub identyfikatora procesu (PID) lub przekazać obiekt procesu za pośrednictwem potoku do tego polecenia cmdlet.
Domyślnie to polecenie cmdlet zwraca obiekt procesu, który zawiera szczegółowe informacje o procesie i obsługuje metody, które umożliwiają rozpoczęcie i zatrzymanie procesu.
Możesz również użyć parametrów Get-Process
polecenia cmdlet, aby uzyskać informacje o wersji pliku dla programu uruchamianego w procesie i pobrać moduły załadowane przez proces.
Przykłady
Przykład 1. Pobieranie listy wszystkich aktywnych procesów na komputerze lokalnym
Get-Process
To polecenie pobiera listę wszystkich aktywnych procesów uruchomionych na komputerze lokalnym. Aby uzyskać definicję każdej kolumny, zobacz sekcję Uwagi .
Przykład 2. Pobieranie wszystkich dostępnych danych dotyczących co najmniej jednego procesu
Get-Process winword, explorer | Format-List *
To polecenie pobiera wszystkie dostępne dane dotyczące procesów Winword i Explorer na komputerze.
Używa parametru Name do określania procesów, ale pomija opcjonalną nazwę parametru.
Operator |
potoku przekazuje dane do Format-List
polecenia cmdlet, które wyświetla wszystkie dostępne właściwości *
obiektów procesu Winword i Explorer.
Można również zidentyfikować procesy według identyfikatorów procesów.
Na przykład Get-Process -Id 664, 2060
.
Przykład 3. Pobieranie wszystkich procesów z zestawem roboczym większym niż określony rozmiar
Get-Process | Where-Object {$_.WorkingSet -gt 20000000}
To polecenie pobiera wszystkie procesy, które mają zestaw roboczy większy niż 20 MB.
Używa polecenia cmdlet do pobierania Get-Process
wszystkich uruchomionych procesów.
Operator |
potoku przekazuje obiekty procesu do Where-Object
polecenia cmdlet, który wybiera tylko obiekt o wartości większej niż 20 000 000 bajtów dla właściwości WorkingSet .
WorkingSet to jedna z wielu właściwości obiektów procesu.
Aby wyświetlić wszystkie właściwości, wpisz Get-Process | Get-Member
.
Domyślnie wartości wszystkich właściwości ilości są w bajtach, mimo że domyślne wyświetlanie wyświetla je w kilobajtach i megabajtach.
Przykład 4. Wyświetlanie listy procesów na komputerze w grupach na podstawie priorytetu
$A = Get-Process
$A | Get-Process | Format-Table -View priority
Te polecenia zawierają listę procesów na komputerze w grupach na podstawie ich klasy priorytetu.
Pierwsze polecenie pobiera wszystkie procesy na komputerze, a następnie przechowuje je w zmiennej $A
.
Drugie polecenie potokuje obiekt Process przechowywany w zmiennej $A
do Get-Process
polecenia cmdlet, a następnie do Format-Table
polecenia cmdlet, które formatuje procesy przy użyciu widoku Priorytet .
Widok Priorytet i inne widoki są zdefiniowane w plikach formatu PS1XML w katalogu głównym programu PowerShell ($pshome
).
Przykład 5. Dodawanie właściwości do standardowego wyświetlania danych wyjściowych Get-Process
Get-Process powershell -ComputerName S1, localhost | Format-Table `
@{Label = "NPM(K)"; Expression = {[int]($_.NPM / 1024)}},
@{Label = "PM(K)"; Expression = {[int]($_.PM / 1024)}},
@{Label = "WS(K)"; Expression = {[int]($_.WS / 1024)}},
@{Label = "VM(M)"; Expression = {[int]($_.VM / 1MB)}},
@{Label = "CPU(s)"; Expression = {if ($_.CPU) {$_.CPU.ToString("N")}}},
Id, MachineName, ProcessName -AutoSize
NPM(K) PM(K) WS(K) VM(M) CPU(s) Id MachineName ProcessName
------ ----- ----- ----- ------ -- ----------- -----------
6 23500 31340 142 1.70 1980 S1 powershell
6 23500 31348 142 2.75 4016 S1 powershell
27 54572 54520 576 5.52 4428 localhost powershell
W tym przykładzie są pobierane procesy z komputera lokalnego i komputera zdalnego (S1).
Pobrane procesy są przesyłane potokami do Format-Table
polecenia, które dodaje właściwość MachineName do standardowego Get-Process
wyświetlania danych wyjściowych.
Przykład 6. Pobieranie informacji o wersji dla procesu
Get-Process powershell -FileVersionInfo
ProductVersion FileVersion FileName
-------------- ----------- --------
6.1.6713.1 6.1.6713.1 (f... C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe
To polecenie używa parametru FileVersionInfo , aby uzyskać informacje o wersji pliku powershell.exe, który jest głównym modułem procesu programu PowerShell.
Aby uruchomić to polecenie z procesami, które nie są własnością systemu Windows Vista i nowszych wersji systemu Windows, należy otworzyć program PowerShell z opcją Uruchom jako administrator.
Przykład 7. Pobieranie modułów załadowanych przy użyciu określonego procesu
Get-Process SQL* -Module
To polecenie używa parametru Moduł , aby pobrać moduły, które zostały załadowane przez proces. To polecenie pobiera moduły dla procesów, które mają nazwy rozpoczynające się od języka SQL.
Aby uruchomić to polecenie w systemie Windows Vista i nowszych wersjach systemu Windows z procesami, których nie jesteś właścicielem, należy uruchomić program PowerShell z opcją Uruchom jako administrator.
Przykład 8. Znajdowanie właściciela procesu
PS C:\> Get-Process powershell -IncludeUserName
Handles WS(K) CPU(s) Id UserName ProcessName
------- ----- ------ -- -------- -----------
782 132080 2.08 2188 DOMAIN01\user01 powershell
$p = Get-WmiObject Win32_Process -Filter "name='powershell.exe'"
$p.GetOwner()
__GENUS : 2
__CLASS : __PARAMETERS
__SUPERCLASS :
__DYNASTY : __PARAMETERS
__RELPATH :
__PROPERTY_COUNT : 3
__DERIVATION : {}
__SERVER :
__NAMESPACE :
__PATH :
Domain : DOMAIN01
ReturnValue : 0
User : user01
Pierwsze polecenie pokazuje, jak znaleźć właściciela procesu. Parametr IncludeUserName wymaga podwyższonych uprawnień użytkownika (Uruchom jako administrator). Dane wyjściowe pokazują, że właścicielem jest Domain01\user01.
Drugie i trzecie polecenie to inny sposób znalezienia właściciela procesu.
Drugie polecenie używa Get-WmiObject
polecenia do pobrania procesu programu PowerShell.
Zapisuje go w zmiennej $p.
Trzecie polecenie używa metody GetOwner, aby uzyskać właściciela procesu w $p. Dane wyjściowe pokazują, że właścicielem jest Domain01\user01.
Przykład 9. Użyj zmiennej automatycznej, aby zidentyfikować proces hostowania bieżącej sesji
Get-Process powershell
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
308 26 52308 61780 567 3.18 5632 powershell
377 26 62676 63384 575 3.88 5888 powershell
Get-Process -Id $PID
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
396 26 56488 57236 575 3.90 5888 powershell
Te polecenia pokazują, jak za pomocą zmiennej automatycznej $PID
zidentyfikować proces hostujący bieżącą sesję programu PowerShell.
Za pomocą tej metody można odróżnić proces hosta od innych procesów programu PowerShell, które warto zatrzymać lub zamknąć.
Pierwsze polecenie pobiera wszystkie procesy programu PowerShell w bieżącej sesji.
Drugie polecenie pobiera proces programu PowerShell hostujący bieżącą sesję.
Przykład 10: Pobieranie wszystkich procesów z tytułem okna głównego i wyświetlanie ich w tabeli
Get-Process | Where-Object {$_.mainWindowTitle} | Format-Table Id, Name, mainWindowtitle -AutoSize
To polecenie pobiera wszystkie procesy, które mają tytuł głównego okna, i wyświetla je w tabeli z identyfikatorem procesu i nazwą procesu.
Właściwość mainWindowTitle jest tylko jedną z wielu przydatnych właściwości obiektu Process , który Get-Process
zwraca.
Aby wyświetlić wszystkie właściwości, należy przekazać potok wyników Get-Process
polecenia do Get-Member
polecenia cmdlet Get-Process | Get-Member
.
Parametry
-ComputerName
Określa komputery, dla których to polecenie cmdlet pobiera aktywne procesy. Wartością domyślną jest komputer lokalny.
Wpisz nazwę NetBIOS, adres IP lub w pełni kwalifikowaną nazwę domeny (FQDN) jednego lub kilku komputerów. Aby określić komputer lokalny, wpisz nazwę komputera, kropkę (.) lub localhost.
Ten parametr nie polega na Windows PowerShell komunikacji zdalnie. Możesz użyć parametru ComputerName tego polecenia cmdlet, nawet jeśli komputer nie jest skonfigurowany do uruchamiania poleceń zdalnych.
Type: | String[] |
Aliases: | Cn |
Position: | Named |
Default value: | Local computer |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-FileVersionInfo
Wskazuje, że to polecenie cmdlet pobiera informacje o wersji pliku dla programu, który jest uruchamiany w procesie.
W systemie Windows Vista i nowszych wersjach systemu Windows należy otworzyć program PowerShell z opcją Uruchom jako administrator, aby użyć tego parametru w procesach, których nie jesteś właścicielem.
Nie można użyć parametrów Get-Process
FileVersionInfo i ComputerName polecenia cmdlet w tym samym poleceniu.
Aby uzyskać informacje o wersji pliku dla procesu na komputerze zdalnym, użyj Invoke-Command
polecenia cmdlet .
Użycie tego parametru jest równoważne pobieraniu właściwości MainModule.FileVersionInfo każdego obiektu procesu.
W przypadku użycia tego parametru Get-Process
zwraca obiekt FileVersionInfoSystem.Diagnostics.FileVersionInfo, a nie obiekt procesu.
Dlatego nie można przekazać potoku danych wyjściowych polecenia cmdlet do polecenia cmdlet, które oczekuje obiektu procesu, takiego jak Stop-Process
.
Type: | SwitchParameter |
Aliases: | FV, FVI |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Id
Określa co najmniej jeden proces według identyfikatora procesu (PID).
Aby określić wiele identyfikatorów, użyj przecinków, aby oddzielić identyfikatory.
Aby znaleźć identyfikator PID procesu, wpisz Get-Process
.
Type: | Int32[] |
Aliases: | PID |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-IncludeUserName
Wskazuje, że wartość UserName obiektu Process jest zwracana z wynikami polecenia.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Określa co najmniej jeden obiekt procesu. Wprowadź zmienną zawierającą obiekty lub wpisz polecenie lub wyrażenie, które pobiera obiekty.
Type: | Process[] |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Module
Wskazuje, że to polecenie cmdlet pobiera moduły, które zostały załadowane przez procesy.
W systemie Windows Vista i nowszych wersjach systemu Windows należy otworzyć program PowerShell z opcją Uruchom jako administrator, aby użyć tego parametru w procesach, których nie jesteś właścicielem.
Aby pobrać moduły, które zostały załadowane przez proces na komputerze zdalnym, użyj Invoke-Command
polecenia cmdlet .
Ten parametr jest odpowiednikiem pobierania właściwości Modules każdego obiektu procesu.
W przypadku użycia tego parametru to polecenie cmdlet zwraca obiekt ProcessModule System.Diagnostics.ProcessModule, a nie obiekt procesu.
Dlatego nie można przekazać potoku danych wyjściowych polecenia cmdlet do polecenia cmdlet, które oczekuje obiektu procesu, takiego jak Stop-Process
.
Jeśli używasz zarówno parametrów Module, jak i FileVersionInfo w tym samym poleceniu, to polecenie cmdlet zwraca obiekt FileVersionInfo z informacjami o wersji pliku wszystkich modułów.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Name
Określa co najmniej jeden proces według nazwy procesu. Można wpisać wiele nazw procesów (oddzielonych przecinkami) i używać symboli wieloznacznych. Nazwa parametru ("Nazwa") jest opcjonalna.
Type: | String[] |
Aliases: | ProcessName |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | True |
Dane wejściowe
Do tego polecenia cmdlet można przekazać obiekt procesu.
Dane wyjściowe
System.Diagnostics.Process, System.Diagnostics.FileVersionInfo, System.Diagnostics.ProcessModule
Domyślnie to polecenie cmdlet zwraca obiekt System.Diagnostics.Process . Jeśli używasz parametru FileVersionInfo , zwraca obiekt System.Diagnostics.FileVersionInfo . Jeśli używasz parametru Module bez parametru FileVersionInfo , zwraca obiekt System.Diagnostics.ProcessModule .
Uwagi
- Możesz również odwołać się do tego polecenia cmdlet za pomocą wbudowanych aliasów, ps i gps. Aby uzyskać więcej informacji, zobacz about_Aliases.
- Na komputerach z 64-bitową wersją systemu Windows 64-bitowa wersja programu PowerShell pobiera tylko 64-bitowe moduły przetwarzania, a 32-bitowa wersja programu PowerShell pobiera tylko 32-bitowe moduły przetwarzania.
- Możesz użyć właściwości i metod obiektu instrumentacji zarządzania Windows (WMI) Win32_Process w programie PowerShell. Aby uzyskać informacje, zobacz
Get-WmiObject
i zestaw WMI SDK. - Domyślnym wyświetlaniem procesu jest tabela zawierająca następujące kolumny. Aby uzyskać opis wszystkich właściwości obiektów procesu, zobacz Właściwości procesu w bibliotece MSDN.
- Uchwyty: liczba otwartych dojść.
- NPM(K): ilość niestronicowanej pamięci używanej przez proces w kilobajtach.
- PM(K): ilość stronicowalnej pamięci używanej przez proces w kilobajtach.
- WS(K): rozmiar zestawu roboczego procesu w kilobajtach. Zestaw roboczy składa się ze stron pamięci, do których ostatnio odwołuje się proces.
- VM(M): ilość pamięci wirtualnej używanej przez proces w megabajtach. Pamięć wirtualna obejmuje magazyn w plikach stronicowania na dysku.
- Procesory CPU: ilość czasu procesora używanego przez proces na wszystkich procesorach w sekundach.
- IDENTYFIKATOR: identyfikator procesu (PID) procesu.
- ProcessName: nazwa procesu. Aby uzyskać wyjaśnienia pojęć związanych z procesami, zobacz Słownik w Centrum pomocy i pomocy technicznej oraz Pomoc dla Menedżera zadań.
- Możesz również użyć wbudowanych alternatywnych widoków procesów dostępnych w
Format-Table
programie , takich jak StartTime i Priorytet, i możesz zaprojektować własne widoki.