Pchełki Powershell: wolne miejsce na dyskach

krótki URL: /5oh

kategorie:Inne Pchełki, Pchełki
tagi:disk, free, powershell, script

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:

powershell-diskfree-01

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

Komentarze