Wyszukiwanie w witrynie

Przestałem korzystać z oprogramowania do monitorowania, gdy dowiedziałem się o tych diagnostykach PowerShell


Zawsze dodawałem warstwę ochronną w postaci oprogramowania firm trzecich do nowych instalacji Windows, obejmującą alternatywy dla Menedżera zadań, skanery portów, śledzenie ścieżek sieciowych oraz specjalistyczne narzędzia takie jak CrystalDiskInfo. Celem jest pełna widoczność systemu. Jednak robiąc to, kończę z większą liczbą usług działających w tle i zbędnym oprogramowaniem, niż chciałbym się przyznać.

Mój moment krytyczny nastąpił, gdy zdałem sobie sprawę, że Windows PowerShell może zrobić prawie wszystko, do czego zainstalowałem zewnętrzne monitory systemu. Te diagnostyki PowerShell stały się nieocenionym zestawem narzędzi do zarządzania i monitorowania mojego komputera, i pokażę wam dokładnie, jak działają.

Get-Counter: Twój wbudowany agent monitorujący

Zobacz dokładnie, co robi Twój system

Zanim zacząłem używać Get-Counter, korzystałem z XMeters, narzędzia do monitorowania systemu na pasku zadań. Znajduje się w zasobniku systemowym i monitoruje użycie procesora i pamięci RAM. To narzędzie miało własną usługę działającą w tle i harmonogram aktualizacji. Miało również wpływ na czas uruchamiania systemu, zwłaszcza na mniej wydajnych urządzeniach.

Używanie Get-Counter w PowerShell natywnie zastępuje to narzędzie. Bez instalowania dodatkowych elementów, Get-Counter monitoruje obciążenie procesora, dostępną pamięć i aktywność dysku. Możesz ustawić interwały odpytywania. Zwykle uruchamiam polecenie w ten sposób:

Get-Counter '\Processor(_Total)\% Processor Time','\Memory\Available MBytes' -SampleInterval 2 -MaxSamples 30

To polecenie wykonuje 30 odczytów w odstępach dwusekundowych. To pojedyncze polecenie zapewnia 60-sekundowy rzeczywisty obraz w czasie rzeczywistym. Mogę dołączyć następujące polecenie Export-Csv, aby zarejestrować wyniki, i natychmiast mam własny dziennik wydajności bez nadmiaru instalowania dodatkowego oprogramowania:

| Export-Csv -Path "$env:USERPROFILE\Desktop\cpu_log.csv" -NoTypeInformation

Uruchomienie polecenia Get-Counter -ListSet * pozwala przeglądać wszystkie kategorie, które Windows śledzi.

Get-Process: lepsze niż klikanie w Menedżera zadań

Szybko znajdź winowajcę

Jeśli używasz Windows, znasz Menedżera zadań — problem w tym, że gdy mój komputer się zawiesza, nie chcę przeskakiwać przez menu czy zakładki, aby odnaleźć czerwoną liczbę. Wolę znaleźć ją i zakończyć w jednym ruchu.

Oto polecenie, które wolałbym uruchomić:

Get-Process | Sort-Object WorkingSet64 -Descending | Select-Object -First 10 Name, Id, @{Name='RAM_MB';Expression={[math]::Round($_.WorkingSet64/1MB,1)}}

To polecenie wyświetla 10 procesów zużywających najwięcej pamięci na moim komputerze, posortowane według rozmiaru. Następnie mogę zakończyć zablokowany proces w jednej linii poleceń, uruchamiając to polecenie:

Get-Process -Name "Chrome" | Where-Object {$_.Responding -eq $false} | Stop-Process -Force

W powyższym poleceniu możesz zastąpić Chrome dowolnym innym procesem, który chcesz zakończyć. Usuwa to potrzebę przewijania lub czekania, aż Menedżer zadań nadrobi zaległości.

Właściwość -Responding wskazuje, czy program wchodzi w interakcję z systemem Windows (True), czy nie (False), dlatego jest przydatna do wykrywania zablokowanych procesów. Jeśli program nie odpowiada, zwraca False, a polecenie automatycznie wymusza jego zatrzymanie. Jest to programowy sposób zakończenia procesu, który zwykle wymaga kilku kliknięć.

Możesz zobaczyć dokładną datę i godzinę uruchomienia procesu, dodając StartTime do wywołania Select-Object. Warto sprawdzić, czy proces nadal używa 2 GB RAM i działa od dwóch tygodni.

Test-NetConnection: jedno polecenie, trzy narzędzia zastąpione

Diagnozuj problemy sieciowe szybciej






Moje kontrole sieci wcześniej wydawały się fragmentaryczne. Korzystałem wbudowanego polecenia ping, tracer i lekkiego skanera portów. Test-NetConnection teraz zastępuje wszystkie trzy. Uruchomienie poniższych poleceń, odpowiednio, informuje mnie, czy host jest osiągalny, czy konkretny port jest otwarty i gdzie występuje awaria połączenia:

Test-NetConnection -ComputerName google.com -InformationLevel Detailed
Test-NetConnection -ComputerName 192.168.1.1 -Port 443
Test-NetConnection -ComputerName 8.8.8.8 -TraceRoute

Test-NetConnection raportuje bardzo czysty i jasny wynik. Ostatnia linia wyjścia, gdy uruchamiasz polecenie sprawdzania portu, brzmi TcpTestSucceeded : True (lub False). Tego rodzaju czysty wynik ułatwia użycie go w zautomatyzowanym skrypcie. Ustawiłem pętle, aby cicho sprawdzać połączenie, rejestrując ostrzeżenie za każdym razem, gdy ta wartość wynosi False.

Get-WinEvent: całkowicie pominąć Podgląd zdarzeń

Znajdź awarie i błędy w kilka sekund

Zawsze uważałem Podgląd zdarzeń za narzędzie technicznie użyteczne, lecz w praktyce okropne. Ładuje się powoli i chowa wiele elementów zbyt głęboko w menu. Naprawdę nie zachęca do eksploracji.

Zamiast go używać, gdy coś ulega awarii lub działa nieprawidłowo, uruchamiam poniższe zapytanie:

Get-WinEvent -FilterHashtable @{
LogName = 'System'
Level = 1,2
StartTime = (Get-Date).AddHours(-24)
} | Select-Object TimeCreated, Id, LevelDisplayName, Message | Format-List

Bez ekranu ładowania ani przechodzenia przez jakiekolwiek frustracje Podglądu zdarzeń, to polecenie wyświetla każde poważne zdarzenie systemowe z ostatnich 24 godzin z precyzją do milisekundy. Poziom 1 to Krytyczny, natomiast Poziom 2 to Błąd.

Dodając | Group-Object Id | Sort-Object Count -Descending, możesz zobaczyć, który identyfikator błędu występuje najczęściej. Zobaczenie jednego błędu 300 razy daje inny kontekst niż zobaczenie 300 różnych błędów.

Get-StorageReliabilityCounter: Stan zdrowia SSD już wbudowany

Sprawdź stan swojego dysku, zanim ulegnie awarii

Prawie wszyscy zaawansowani użytkownicy, których znam, używają CrystalDiskInfo. Jest dobrze zbudowany i jest jednym z najlepszych sposobów na sprawdzenie, czy Twój dysk SSD jest w dobrym stanie. Jednak Windows już śledzi te dane i możesz je zobaczyć, uruchamiając poniższe polecenie jako administrator na obsługiwanych dyskach:

Get-PhysicalDisk | Get-StorageReliabilityCounter | Select-Object DeviceId, Temperature, Wear, ReadErrorsTotal, PowerOnHours

Zużycie informuje Cię o ilości przewidywanej wytrzymałości dysku, która została wykorzystana. Jest to wyrażone jako liczba, a nie kolor, co pozwala mi tworzyć skrypty powiadomień na jej podstawie. Na przykład, jeśli następujące polecenie zwróci jakiekolwiek wyniki (tzn. dyski z Zużyciem > 80), jest to znak, że muszę poważnie zacząć robić kopie zapasowe:

Get-PhysicalDisk | Get-StorageReliabilityCounter | Where-Object {$_.Wear -gt 80} | Select-Object DeviceId, Wear

Mniej oprogramowania, ta sama widoczność

Co najbardziej mnie zaskoczyło, to fakt, że ogromna część mojego oprogramowania do monitorowania istnieje po to, aby pokazać to, co Windows już pokazuje. Dzięki tym pięciu diagnostykom obejmuję monitorowanie wydajności, zarządzanie procesami, rozwiązywanie problemów z siecią, analizę logów i zdrowie pamięci masowej. Nadal używam narzędzi firm trzecich, ale tylko jeśli oferują coś naprawdę wyjątkowego.

Powiązane artykuły