2016-11-09 1 views
0

Ich benötige Gesamtraum und belegten Speicherplatz eines SAN-Volumes in Windows. Es gibt zu viele Volumes auf dem Server, um mithilfe der Windows-Mountpunkte zu mounten. Stattdessen mountet die Server-Software alle verfügbaren Volumes im Pfad C: \ Volumes.Windows-Volume Größe, freier Speicherplatz

wmic logicaldisk get volumename, size, freespace 

ist schnell und funktioniert gut, aber es listet nur die Volumes als Windows-Buchstaben montiert.

dir \s \a C:\Volumes\SomeVolumeName 

gibt die Informationen zurück, die ich brauche, aber es ist sehr langsam, da es durch alle Dateien recursiert. Ich habe Hunderttausende von Dateien auf jedem Volume.

du C:\Volumes\SomeVolumeName 

ist langsam aus dem gleichen Grund wie der Befehl dir.

Gibt es eine andere Möglichkeit, schnelle Statistiken auf einem Volume von der Windows-Befehlszeile oder noch besser von Python zu bekommen?

+0

Dies sollte Ihnen alle Volumes geben: 'WMIC Volume erhalten Kapazität, FreeSpace, Label, Name'. – eryksun

+0

wmic funktioniert nur mit Volumes, denen ein Buchstabe zugewiesen wurde. Das geht bei mir nicht. Ich habe mehr Volumen als die Buchstaben im Alphabet. –

+0

Es verwendet 'Volume', nicht' Logicdisk'. Es funktionierte für mich auf einer Diskette, die in einem Ordner ohne Laufwerksbuchstaben lag. Ich hätte es nicht anders vorgeschlagen. Das Feld 'Name' sollte der Ordner sein, in dem das Volume geladen ist. – eryksun

Antwort

1

Ich glaube, Sie suchen psutil

psutil (Python System- und Prozess Dienstprogramme) ist eine plattformübergreifende Bibliothek für Abrufen von Informationen über Prozesse und System Auslastung (CPU, Speicher, Festplatten laufen, Netzwerk) in Python. Es ist nützlich hauptsächlich für Systemüberwachung, Profilierung und Begrenzung von Prozessressourcen und Verwaltung von laufenden Prozessen. Es implementiert viele Funktionen von Kommandozeilen-Tools wie: ps, top, lsof, netstat, ifconfig, wer, df, kill, frei, schön, ionice, iostat, iotop, uptime, pidof, tty, taskset, pmap . Es unterstützt derzeit Linux, Windows, OSX, Sun Solaris, FreeBSD, OpenBSD und NetBSD, beide 32-Bit und 64-Bit-Architekturen, mit Python-Versionen von 2.6 bis 3.5 (Benutzer von Python 2.4 und 2.5 2.1.3 verwenden Ausführung). PyPy ist auch unter bekannt.

https://pythonhosted.org/psutil/

Und für Sie, besonders diesen Teil der Dokumentation: https://pythonhosted.org/psutil/#disks

+1

Wie in den Dokumenten erwähnt, können Sie bei Verwendung von Python 3 ['shuthil.disk_usage'] (https://docs.python.org/3/library/shutil.html#shutil.disk_usage) verwenden. Dies funktioniert mit Volume-Mountpoints unter Windows. – eryksun

+0

'psutil.disk_partitions' listet nur Volumes mit einem DOS-Laufwerksbuchstaben auf. Das ist enttäuschend. – eryksun

+0

@eryksun Sie versucht mit 'psutil.disk_partitions (alle = True)'? –

0

Sie die requried Daten aus dem unten Skript erhalten können. Geben Sie alle Volumes in Ihrem System im Array $ Drive und es braucht nicht viel Zeit in Anspruch nehmen

$DriveLetter="C,D" 
$DriveLetters=$DriveLetter.Split(',') 
foreach ($item in $DriveLetters) 
{ 
$data=Get-PSDrive $item | Select-Object Used,Free 
$UsedData=$data.Used 
$FreeSPace=$data.Free 
"Used Space in Drive $item : $UsedData" 
"Free space in Drive $item : $FreeSPace" 
} 

Hope it helps auszuführen.

+0

Die Volumes werden in Unterverzeichnissen von 'C: \ Volumes' gemountet. Ihnen sind keine DOS-Laufwerkbuchstaben zugewiesen. – eryksun

+1

PowerShell hat ['Get-Volume'] (https://technet.microsoft.com/en-us/library/hh848646), z. 'foreach ($ v in Get-Volume -FilePath C: \ Volumes) {Write-Output (" Name: {0} \ 'nGröße: {1} \' nFrei: {2} \ 'n" -f ($ v .FileSystemLabel, $ v.Size, $ v.SizeRemaining))} '. – eryksun

+0

Mein PS hat kein Get-Volume. Es gibt zwar Get-WMIObject, aber es sieht nicht alle meine Volumes, so wie oben beschrieben. –

Verwandte Themen