Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa

Darmowa diagnoza laptopa

Dojazd do klienta bezpłatnie

Dojazd do klienta bezpłatnie

Laptopy zastępcze bezpłatnie

Laptopy zastępcze bezpłatnie

Odbiór i zwrot sprzętu bezpłatnie

Odbiór i zwrot sprzętu bezpłatnie

Get-Process | Where-Object {$_.CPU -gt 100} – filtr CPU

Termin Definicja
Get-Process | Where-Object {$_.CPU -gt 100} – filtr CPU

Get-Process | Where-Object {$_.CPU -gt 100} filtruje procesy zużywające więcej niż 100 sekund czasu procesora — przydatne do znajdowania długo działających, obciążających procesów.

Get-Process | Where-Object {$_.CPU -gt 100} – definicja i zastosowanie filtra CPU

Polecenie Get-Process | Where-Object {$_.CPU -gt 100} służy do zawężenia listy uruchomionych procesów w systemie Windows do tych, które przekroczyły określony próg skumulowanego czasu procesora. Najpierw polecenie Get-Process pobiera obiekty opisujące aktywne procesy, a następnie operator potoku | przekazuje je do Where-Object. Drugi element sprawdza warunek zapisany w nawiasach klamrowych: właściwość CPU musi mieć wartość większą niż 100.

Wartość odczytywana przez CPU nie oznacza bezpośrednio bieżącego procentowego użycia procesora. Jest to łączny czas pracy procesu na CPU, wyrażany w sekundach, naliczany od momentu jego uruchomienia. Z tego powodu filtr może wskazać zarówno aplikację aktualnie obciążającą komputer, jak i program, który działał długo, lecz w chwili wykonywania polecenia nie wykorzystuje już intensywnie zasobów. Sam wynik powinien więc być traktowany jako punkt wyjścia do dalszej analizy.

W niektórych wersjach PowerShell dla części procesów właściwość CPU może być niedostępna, pusta albo powodować błąd związany z brakiem uprawnień. Zależy to między innymi od rodzaju procesu, poziomu dostępu oraz sposobu uruchomienia powłoki. Polecenie nie jest zatem pełnym pomiarem obciążenia chwilowego, lecz prostym filtrem obiektów procesów według skumulowanego czasu procesora.

Kontekst techniczny i porównanie z innymi metodami pomiaru

Filtr Where-Object {$_.CPU -gt 100} działa na właściwościach obiektów PowerShell, a nie na zwykłym tekście wyświetlanym w konsoli. Ma to znaczenie praktyczne: można od razu sortować, wybierać i formatować dane bez ręcznego analizowania kolumn. Przykładowo, aby zobaczyć procesy przekraczające próg w uporządkowanej kolejności, można użyć:

Get-Process |
    Where-Object { $_.CPU -gt 100 } |
    Sort-Object CPU -Descending |
    Select-Object Id, ProcessName, CPU

W takim zestawieniu identyfikator procesu, nazwa programu i naliczony czas CPU są prezentowane w sposób ułatwiający dalsze rozpoznanie. Identyfikator Id pozwala odróżnić kilka instancji tego samego programu, natomiast ProcessName wskazuje aplikację lub składnik systemu, z którym należy powiązać obserwowane działanie.

Jeżeli celem jest sprawdzenie aktualnego, chwilowego użycia procesora, lepiej wykorzystać Get-Counter, Menedżera zadań albo narzędzie monitorujące próbki w kolejnych odstępach czasu. Można też pobrać procesy kilka razy i porównywać zmianę wartości, lecz wymaga to uwzględnienia upływu czasu oraz liczby rdzeni. Wartość CPU z Get-Process może być przydatna do wykrywania procesów długo działających, ale nie powinna być utożsamiana z odczytem w rodzaju „proces zajmuje obecnie 100 procent CPU”.

Próg 100 jest warunkiem logicznym, który można zmienić zgodnie z potrzebą. Operator -gt oznacza „większe niż”, więc proces z wartością dokładnie równą 100 nie zostanie uwzględniony. Przy warunku obejmującym także równą wartość zastosowano by -ge. Przy selekcji procesów o mniejszym obciążeniu używa się odpowiednio -lt, a przy sprawdzaniu zakresów można połączyć kilka warunków operatorami -and lub -or.

Typowe problemy, błędy i ograniczenia - Get-Process | Where-Object {$_.CPU -gt 100} – filtr CPU

Jednym z częstszych nieporozumień jest odczytywanie liczby w polu CPU jako procentu. Przykładowo proces z wartością 250 nie musi w danej chwili zajmować określonego procentu mocy obliczeniowej. Liczba ta opisuje czas skumulowany i będzie zwykle rosła wraz z dalszym działaniem procesu, nawet jeżeli bieżące obciążenie zmieni się na niewielkie.

Drugim problemem może być brak wyników. Nie musi to oznaczać, że komputer nie wykonuje obciążających operacji. Żaden proces nie musiał przekroczyć ustawionego progu, właściwość mogła nie zostać udostępniona dla wybranych procesów albo problem dotyczy chwilowego użycia CPU, którego to polecenie nie mierzy. Przy diagnostyce należy porównać rezultat z Menedżerem zadań, Monitor zasobów lub pomiarem liczników systemowych.

Trudności może powodować również próba pobierania danych z procesów chronionych. Część informacji wymaga uruchomienia PowerShell z podwyższonymi uprawnieniami, a część procesów systemowych może być celowo ograniczona. Nie należy automatycznie kończyć procesu tylko dlatego, że znalazł się na liście. Najpierw trzeba ustalić jego nazwę, lokalizację pliku wykonywalnego, powiązanie z używaną aplikacją oraz to, czy wzrost czasu CPU jest stały.

Ryzykowne może być także użycie samego Stop-Process jako szybkiej reakcji. Zakończenie procesu może spowodować utratę niezapisanych danych, przerwanie aktualizacji albo niestabilność aplikacji zależnych od danego składnika. Bezpieczniejsze jest rozpoczęcie od zebrania informacji, na przykład przez dodanie Id, Path, StartTime lub Company, o ile dane te są dostępne:

Get-Process |
    Where-Object { $_.CPU -gt 100 } |
    Select-Object Id, ProcessName, CPU, StartTime, Path

Jeżeli właściwość StartTime albo Path nie jest dostępna, wynik może zawierać błąd lub puste pole. Nie należy wtedy uznawać braku wartości za dowód awarii. Czasem konieczne jest sprawdzenie procesu z odpowiednim poziomem uprawnień albo użycie dodatkowego narzędzia diagnostycznego.

Kiedy trzeba skorzystać z pomocy serwisu - Get-Process | Where-Object {$_.CPU -gt 100} – filtr CPU

Zgłoszenie do serwisu jest uzasadnione, gdy wysokie obciążenie procesora powtarza się, komputer wyraźnie zwalnia, wentylator pracuje intensywnie, aplikacje przestają odpowiadać albo problem pojawia się po uruchomieniu konkretnego programu. Szczególnej uwagi wymaga sytuacja, w której ten sam proces regularnie przekracza próg, uruchamia się samoczynnie, ma nietypową lokalizację lub towarzyszą mu komunikaty o błędach, zawieszanie systemu i nieoczekiwane restarty.

Przydatne jest przygotowanie nazwy procesu, jego identyfikatora, czasu występowania problemu oraz informacji, czy obciążenie pojawia się od razu po starcie systemu, czy dopiero podczas określonej czynności. Takie dane ułatwiają rozróżnienie problemu z aplikacją, usługą systemową, aktualizacją, sterownikiem, nośnikiem danych albo niepożądanym oprogramowaniem. Sam wynik filtra nie przesądza jeszcze o przyczynie, ponieważ proces może być jedynie skutkiem innego problemu.

W Warszawskim Pogotowiu Komputerowym 24/7 dostępna jest darmowa diagnoza LAPTOPA, dzięki której można zweryfikować, czy wskazany proces rzeczywiście odpowiada za spowolnienie oraz jakie działania naprawcze są bezpieczne. W ramach analizy można zestawić odczyty z PowerShell z zachowaniem systemu, logami zdarzeń i obciążeniem innych podzespołów, a następnie ustalić źródło problemu bez pochopnego usuwania lub zatrzymywania potrzebnych składników.