Ik ben gestopt met het gebruiken van monitoringsoftware zodra ik deze PowerShell-diagnostiek leerde
Ik heb altijd een beschermende laag van software van derden toegevoegd aan nieuwe Windows-installaties, bestaande uit alternatieven voor Taakbeheer, poortscanners, netwerktracers en gespecialiseerde hulpmiddelen zoals CrystalDiskInfo. Het doel is totale systeemzichtbaarheid. Door dat te doen, eindig ik echter met meer achtergrondservices en bloat dan ik zou willen toegeven.
Mijn breekpunt was het besef dat Windows PowerShell bijna alles kon doen waarvoor ik aparte systeemmonitoren van derden had geïnstalleerd. Deze PowerShell-diagnostiek is een onschatbare toolkit geworden voor het beheren en monitoren van mijn pc, en ik zal je precies laten zien hoe ze werken.
Get-Counter: uw ingebouwde bewakingsagent
Zie precies wat uw systeem doet
Voordat ik begon met het gebruiken van Get-Counter, gebruikte ik XMeters, een taakbalksysteem-monitoringtool. Het zit in het systeemvak en bewaakt het CPU- en RAM-gebruik. Deze tool had zijn eigen achtergrondservice en updateschema. Het had ook invloed op de opstarttijd, vooral op minder krachtige apparaten.
Het gebruik van Get-Counter in PowerShell vervangt dit hulpmiddel van nature. Zonder extra's te installeren, monitort Get-Counter de processorbelasting, beschikbare geheugen en schijfactiviteit. Je kunt de interval voor het polsen instellen. Ik voer meestal een opdracht als deze uit:
Get-Counter '\Processor(_Total)\% Processor Time','\Memory\Available MBytes' -SampleInterval 2 -MaxSamples 30Dit commando voert 30 metingen uit met tussenpozen van twee seconden. Dat ene commando geeft een realtime momentopname van 60 seconden. Ik kan het volgende Export-Csv-commando toevoegen om de uitvoer vast te leggen, en direct heb ik mijn eigen prestatie-logboek zonder de rompslomp van extra software te installeren:
| Export-Csv -Path "$env:USERPROFILE\Desktop\cpu_log.csv" -NoTypeInformationHet uitvoeren van het commando Get-Counter -ListSet * stelt je in staat om alle categorieën te bekijken die Windows bijhoudt.
Get-Process: beter dan klikken in Taakbeheer
Vind de dader snel
Als je Windows gebruikt, ben je bekend met Taakbeheer—het probleem is dat wanneer mijn computer vastloopt, ik niet door menu's of tabbladen wil moeten navigeren om een rood nummer te vinden. Ik zou het liever in één keer willen vinden en beëindigen.
Hier is het commando dat ik liever zou uitvoeren:
Get-Process | Sort-Object WorkingSet64 -Descending | Select-Object -First 10 Name, Id, @{Name='RAM_MB';Expression={[math]::Round($_.WorkingSet64/1MB,1)}}Dit commando toont de top 10 geheugengebruikers op mijn computer, gesorteerd op grootte. Daarna kan ik een vastgelopen proces in één enkele pipeline beëindigen door dit commando uit te voeren:
Get-Process -Name "Chrome" | Where-Object {$_.Responding -eq $false} | Stop-Process -ForceJe kunt Chrome in het bovenstaande commando vervangen door elk ander proces dat je wilt beëindigen. Het elimineert de noodzaak om te scrollen of te wachten tot Taakbeheer bijwerkt.
De -Responding-eigenschap geeft aan of het programma interactie heeft met Windows (True) of niet (False), vandaar dat het nuttig is voor het detecteren van vastgelopen processen. Als het programma niet reageert, retourneert het False, en het commando dwingt het automatisch om te stoppen. Dit is een programmeerbare manier om een proces te beëindigen dat normaal gesproken meerdere klikken vereist.
Je kunt de exacte datum en tijd zien waarop een proces is gestart door StartTime toe te voegen aan je Select-Object-aanroep. Het is de moeite waard om te onderzoeken of een proces nog steeds 2 GB RAM gebruikt en al twee weken draait.
Test-NetConnection: één opdracht, drie gereedschappen vervangen
Netwerkproblemen sneller diagnosticeren
Mijn netwerkcontroles voelden vroeger gefragmenteerd aan. Ik gebruikte de ingebouwde ping, tracer en een lichte poortscanner. Test-NetConnection vervangt nu alle drie. Het uitvoeren van de onderstaande opdrachten vertelt me respectievelijk of de host bereikbaar is, of een specifieke poort open is, en waar een verbinding faalt:
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 geeft een zeer duidelijke en heldere uitvoer. De laatste regel van de uitvoer wanneer je het poort-controle commando uitvoert, leest TcpTestSucceeded : True (of False). Dit soort heldere uitvoer maakt het gemakkelijk om te gebruiken in een geautomatiseerd script. Ik heb lussen ingesteld om stilletjes een verbinding te controleren, waarbij een waarschuwing wordt gelogd telkens wanneer die waarde False is.
Get-WinEvent: sla Event Viewer volledig over
Vind crashes en fouten in seconden
Ik heb Event Viewer altijd beschouwd als een technisch nuttig, maar praktisch verschrikkelijk hulpmiddel. Het duurt lang om te laden en begraven veel elementen te diep in de menu's. Het moedigt echt geen verkenning aan.
In plaats van het te gebruiken, wanneer iets crasht of zich vreemd gedraagt, voer ik de onderstaande query uit:
Get-WinEvent -FilterHashtable @{
LogName = 'System'
Level = 1,2
StartTime = (Get-Date).AddHours(-24)
} | Select-Object TimeCreated, Id, LevelDisplayName, Message | Format-List
Zonder een laadscherm of het doorlopen van de frustraties van de Logboeken van gebeurtenissen, toont dit commando elk serieus systeemgebeurtenis van de afgelopen 24 uur met milliseconde-nauwkeurigheid. Niveau 1 is Kritiek, terwijl Niveau 2 Fout is.
Door | Group-Object Id | Sort-Object Count -Descending toe te voegen, zie je welke fout-ID het meest voorkomt. Het zien van één fout die 300 keer optreedt geeft een andere context dan het zien van 300 verschillende fouten.
Get-StorageReliabilityCounter: SSD-gezondheid al ingebouwd
Ken de staat van uw schijf voordat deze faalt
Bijna alle powergebruikers die ik ken gebruiken CrystalDiskInfo. Het is goed gebouwd en een van de beste manieren om te zien of je SSD gezond is. Windows houdt deze gegevens echter al bij, en je kunt ze bekijken door het onderstaande commando als beheerder uit te voeren op ondersteunde schijven:
Get-PhysicalDisk | Get-StorageReliabilityCounter | Select-Object DeviceId, Temperature, Wear, ReadErrorsTotal, PowerOnHoursWear geeft aan hoeveel van de gemiddelde levensduur van je schijf is gebruikt. Dit wordt weergegeven als een getal in plaats van een kleur, waardoor ik er meldingen omheen kan scripten. Bijvoorbeeld, als het volgende commando resultaten oplevert (d.w.z. schijven met Wear > 80), is dat een teken dat ik serieus met het maken van back-ups moet beginnen:
Get-PhysicalDisk | Get-StorageReliabilityCounter | Where-Object {$_.Wear -gt 80} | Select-Object DeviceId, WearMinder software, dezelfde zichtbaarheid
Wat mij het meest heeft verbaasd is dat een groot deel van mijn monitoringsoftware bestaat om weer te geven wat Windows al weergeeft. Met deze vijf diagnostische hulpmiddelen dek ik prestatiemonitoring, procesbeheer, netwerktroubleshooting, loganalyse en opslaggezondheid. Ik gebruik nog steeds tools van derden, maar alleen als ze iets echt unieks bieden.








