Oké, het controleren van je schijfruimte op een Windows-machine is soms niet zo eenvoudig als een vinkje zetten, vooral als je met externe servers werkt of geautomatiseerde waarschuwingen wilt ontvangen. In dit artikel wordt uitgelegd hoe je schijfinformatie kunt opvragen met PowerShell en WMI. Dat is handig, maar kan ingewikkeld worden als je niet weet waar je moet beginnen. Bovendien, als je pop-ups of e-mailwaarschuwingen wilt ontvangen wanneer de schijfruimte bijna op is, dan komt scripting van pas. Het is dus belangrijk om de commando’s te begrijpen en te weten hoe je ze kunt aanpassen aan jouw specifieke situatie, zodat je later veel problemen voorkomt.
Hoe u de schijfruimte in Windows kunt herstellen en bekijken met PowerShell
Controleer de beschikbare schijfruimte lokaal met PowerShell.
Deze methode is het meest geschikt als u snel de vrije ruimte op uw schijven wilt bekijken. Het maakt gebruik van de Win32_LogicalDisk WMI-klasse, die informatie over uw logische schijven bevat. Door Get-WmiObjectof de moderne vervanging ervan uit te voeren Get-CimInstance, wordt die informatie in de shell weergegeven. Als u “niet ondersteund in PowerShell Core” ziet, vergeet dan niet om te vervangen door Get-WmiObject.Get-CimInstanceDe uitvoer bevat de schijfgrootte, de vrije ruimte en een percentage, waardoor u gemakkelijker kunt zien wat vol raakt.
Hier is het commando:
Get-WmiObject -Class Win32_LogicalDisk | Select-Object -Property DeviceID, VolumeName, @{Label='FreeSpace (Gb)'; expression={($_. FreeSpace/1GB).ToString('F2')}}, @{Label='Total (Gb)'; expression={($_. Size/1GB).ToString('F2')}}, @{label='FreePercent'; expression={[Math]::Round(($_. FreeSpace/ $_. Size)*100, 2)}} | Format-Table -AutoSize
Tip: Houd het vrije percentage goed in de gaten. Bij sommige configuraties kan dit rapport duizenden GB’s aan vrije ruimte weergeven, zelfs als de schijf technisch gezien vol is. Dit kan te maken hebben met vreemde schijfconfiguraties of onjuist gerapporteerde gegevens, wat wel vaker voorkomt. Controleer daarom altijd met schijfbeheerprogramma’s als er iets niet klopt.
Stel automatische waarschuwingen in voor wanneer de schijfruimte bijna vol is.
Tenzij je het geen probleem vindt om constant handmatig scripts uit te voeren, kan het instellen van een geplande taak om dit script uit te voeren en je meldingen te sturen een uitkomst zijn. Je kunt het script aanpassen om pop-ups te verzenden met Wscript. Shell of e-mails te versturen met Send-MailMessage. Op deze manier krijg je direct een melding wanneer de schijfruimte bijvoorbeeld onder de 20% komt – een soort waarschuwing op je dashboard, maar dan geautomatiseerd.
Hier is een voorbeeldcodefragment dat controleert of er voldoende ruimte is en een foutmelding geeft als deze onder een bepaalde drempelwaarde ligt:
$percentWarning = 20 $percentCritical = 5 $disks = Get-WmiObject -Class Win32_LogicalDisk foreach ($disk in $disks) { if ($disk. Size -ne $null) { $freePercent = [Math]::Round(($disk. FreeSpace / $disk. Size) * 100, 2) if ($freePercent -lt $percentWarning) { $message = "Warning: Disk $($disk. DeviceID) has only $freePercent% free" if ($freePercent -lt $percentCritical) { $message = "CRITICAL! Disk $($disk. DeviceID) almost full!" } $wshell = New-Object -ComObject Wscript. Shell $wshell. Popup($message, 10, "Disk Space Alert", 64) } } }
Dit kleine scriptje toont pop-ups, maar je kunt het aanpassen om e-mailmeldingen te verzenden of het via Taakplanner op een vast tijdstip uit te voeren. Let wel, de pop-up verschijnt soms niet direct als je systeem druk bezig is of als de externe verbinding instabiel is, dus verwacht geen wonderen.
Een e-mail versturen wanneer er weinig opslagruimte is
Als pop-upwaarschuwingen niet voldoende zijn, kan het versturen van een e-mail een slimmere oplossing zijn, vooral als u meerdere servers beheert. Voer simpelweg uw SMTP-servergegevens in Send-MailMessage. Mogelijk moet u hiervoor een apart account aanmaken als de beveiliging streng is. Voer het script uit en u ontvangt een e-mail zodra de schijfruimte onder een bepaalde drempelwaarde komt.
Voorbeeld van een opdrachtfragment:
Send-MailMessage -To "[email protected]" -From "[email protected]" -Subject "Low Disk Space Alert on $env:computername" -Body "Disk $($disk. DeviceID) only has $($disk. FreeSpace/1GB) GB free." -SmtpServer smtp.yourprovider.com -Port 587 -Credential (Get-Credential) -UseSsl
Let op: u wordt gevraagd om inloggegevens, tenzij u deze vastcodeert of veilig opslaat. Niet de beste oplossing, maar het werkt wel voor snelle tests.
Hoe controleer je de beschikbare schijfruimte op een externe schijf met PowerShell?
Als u meerdere servers beheert, geeft u er waarschijnlijk de voorkeur aan om controles op afstand uit te voeren in plaats van op elke machine afzonderlijk in te loggen. Met Invoke-Command kunt u precies dat doen. U schrijft uw controlescript en dit wordt uitgevoerd op externe hosts via WSMan, mits u de juiste machtigingen hebt en WinRM correct is geconfigureerd.
Hier is een kort voorbeeld:
Invoke-Command -ComputerName server1, server2 -ScriptBlock { Get-WmiObject -Class Win32_LogicalDisk | Select-Object DeviceID, FreeSpace, Size }
Of, als je gegevens uit Active Directory haalt, kun je een lijst met servers opvragen en ze één voor één doorlopen – een soort batchcontrole:
$servers = (Get-ADComputer -Filter 'operatingsystem -like "*Windows Server*" -and enabled -eq $true').Name foreach ($server in $servers) { Invoke-Command -ComputerName $server -ScriptBlock { Get-WmiObject -Class Win32_LogicalDisk | Select-Object DeviceID, FreeSpace, Size } }
Een andere optie is het gebruik van RemoteWMI, wat soms wat lastiger kan zijn, vooral met firewalls of toegangsrechten, maar in één configuratie werkte het wel. Houd er wel rekening mee dat voor massale monitoring tools zoals Zabbix of Nagios wellicht betrouwbaarder en gemakkelijker schaalbaar zijn.
Eerlijk gezegd, tenzij je dit correct instelt met de juiste machtigingen en geplande uitvoeringen, kun je vergeten cruciale schijven te controleren, wat tot systeemproblemen kan leiden. Automatisering met PowerShell en een beetje routinecontrole is daarom absoluut zinvol.
Samenvatting
Deze hele aanpak is behoorlijk flexibel: je krijgt snelle lokale controles, monitoring op afstand van servers en manieren om waarschuwingen te automatiseren. Het is een soort mix tussen eenvoudige handmatige controles en semi-professionele automatisering, wat voldoende is voor veel dagelijkse scenario’s. Houd wel rekening met de omgeving: sommige opdrachten vereisen mogelijk beheerdersrechten, vooral op servers of externe systemen. En ja, PowerShell-scripting kan soms voor verrassingen zorgen, maar aan de andere kant is het veel krachtiger dan rondklikken in Schijfbeheer en hopen op het beste.
Samenvatting
- Gebruik
Get-CimInstanceofGet-WmiObjectom schijfinformatie te controleren. - Stel scripts in om pop-ups of e-mails te verzenden wanneer er weinig ruimte is.
- Automatiseer met Taakplanner of voer controles op afstand uit met
Invoke-Command. - Voor grootschalige monitoring kunt u overwegen om gespecialiseerde tools zoals Zabbix of Nagios te gebruiken.
Eindconclusie
Hopelijk biedt dit een goed uitgangspunt voor het monitoren van schijfruimte zonder gek te worden. Er komt nog wel wat afstellen bij kijken, maar als je het goed doet, kan het later een hoop paniek voorkomen. Ik hoop dat dit iemand een paar uur bespaart of zelfs een volledige schijfcrash voorkomt!