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.
Ja na „starym” laptopie mam Samurize, które pokazuje mi co chcę o dyskach na żywo. Oprócz tego id i siłę Wifi, obciążenie procka, naładowanie baterii i takie tam… Tu masz opisany program i alternatywy do niego (skądinąd fajna stronka, polecam się pobawić na niej trochę 😉 ): http://alternativeto.net/software/samurize/
Takich aplikacji jest na pęczki. Ale to są programy innych dostawców, a ja potrzebowałem zmajstrować coś na szybko i przy użyciu wyłącznie wbudowanych w system narzędzi.
get-psdrive -psprovider filesystem
Przed chwilą sprawdziłem sobie z nudów kto i kiedy zamieścił pięciotysięczny komentarz na moim blogu. Okazało się, że to właśnie ten tutaj powyżej. Gratuluję! Nagród póki co nie przewiduję, ale satysfakcji Ci już nikt nie odbierze 😉
Właśnie tego szukałem ! 😀 Jesteś wybawca dla mnie 😀 Nigdy nie pisze komentarzy ale teraz byłoby grzechem nie podziekować ! DZIEKI!!!!!
A jak zrobić zeby wynik wrzucic do txt?
Jeżeli chcesz do pliku tekstowego, to po pierwsze musisz się pozbyć zewnętrznej, nieskończonej pętli (While($true)), po drugie wywalić czyszczenie ekranu (Clear-Host) a po trzecie zamienić Write-Host na Write-Output i dodać na końcu przekierowanie do pliku, o tak:
Oj, pospieszyłem się, powyższe nie zadziała. Spróbuj tego:
Pewnie można krócej, pokombinuj sobie.
Bardziej chodzi mi o to polecenie jest dal mnie bardzo dobre „get-psdrive -psprovider filesystem” jak zapisać wynik tego do pliku np txt. Towje rozwiązanie również działa 😉 ale ciekaw jestem jak z tamtym poleceniem mozna sobie poradzić.
ok, a teraz zeby to wszystko wysłać na maila 🙂 ?
http://bfy.tw/HKcO
Nie mo żli we ! 😀 da się tak 😉 oczywiście że szukałem i nie trzeba robić ze mnie idio** ale jak sam Pan widzi na Pana stronie znalazłem takie rozwiązania które są o wiele łatwiejsze. Skrypt mam na wysyłanie drogą mailową chciałem go jakoś uprościć i połączyć z wyświetlaniem danych o wolnej przestrzeni dyskowej ale jednak już tu chyba pomocy nie uzyskam nie mniej jednak dziękuje za pomoc.
Pozdrawiam.