Pchełki Powershell: wolne miejsce na dyskach
Sposobów na sprawdzenie ilości wolnego miejsca na dysku jest dużo. Najprościej uruchomić okno Eksploratora i rzucić okiem.
Niedawno jednak naszła mnie potrzeba napisania aplikacji konsolowej, która wyświetlałaby mi informację o wolnym miejscu na wybranych dyskach w następujący sposób:
C:\ XXX GB free, YYY GB used
D:\ ZZZ GB free, VVV GB used
i tak dalej.
Po kilku nieudanych próbach napisania tego w "zwykłym" .bat spróbowałem z PowerShell. Najpierw wyguglałem możliwość użycia WMI Instrumentation, ale rozwiązanie było trochę za bardzo skomplikowane.
Zagadałem więc do znajomego, który siedzi w branży serwerowej. Nie wiem dokładnie czym się gość zajmuje, ale wiem, że jak mam jakiekolwiek pytanie dotyczące zarządzania serwerami (głównie linuksowymi, ale nie tylko), facet na 99% będzie miał odpowiedź od ręki.
Istotnie, miał: magiczne polecenie Get-PSDrive
Całość kodu wygląda tak:
While($true) {
Clear-Host
ForEach($Disk in $(Get-PSDrive E, F, G, H)) {
Write-Host $Disk.Root $('{0:N0}' -f $($Disk.Free/(1024*1024*1024)))'GB free,'$('{0:N0}' -f $($Disk.Used/(1024*1024*1024)))'GB used'
}
Start-Sleep -s 10
}
Jeszcze raz, tym razem z lepiej "połamanymi" liniami, na małe ekrany:
While($true) {
Clear-Host
ForEach($Disk in $(Get-PSDrive E, F, G, H)) {
Write-Host `
$Disk.Root `
$('{0:N0}' -f $($Disk.Free/(1024*1024*1024))) `
GB free `
$('{0:N0}' -f $($Disk.Used/(1024*1024*1024))) `
GB used
}
Start-Sleep -s 10
}
A oto efekt:

Jeżeli ktoś jest zainteresowany szczegółowymi objaśnieniami, zapraszam do komentarzy.
Komentarze