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 30To 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" -NoTypeInformationUruchomienie 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 -ForceW 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 -TraceRouteTest-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, PowerOnHoursZuż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, WearMniej 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.








