Bytes in Megabytes und Gigabytes umrechnen in PowerShell

    Wenn man Systeminformationen wie etwa den freien Plattenplatz über WMI abfragt, dann erhält man die Angaben in Bytes. Das Gleiche gilt bei Get-ChildItem, dem Äquivalent zum dir-Befehl, das Dateigrößen ebenfalls nur in Bytes anzeigt. Gerade bei großen Werten ist diese aber nicht besonders nützlich. PowerShell bietet aber einfache Möglichkeiten, Bytes in Megabytes oder Gigabytes zu konvertieren.

    Wenn man zum Beispiel die Größe eines Laufwerks ermitteln will, dann kann man dies mit

    (gwmi Win32_DiskDrive)[0]|select model, size

    tun. In diesem Fall zeigt das Ergebnis den Wert für die erste Disk an, und zwar aufgrund der gängigen Plattengrößen als ellenlange Zahl. Relevant ist eigentlich nur die Zahl der GB, und die kann man leicht ermitteln, indem man die Bytes durch die vordefinierte Konstante 1GB teilt:

    (gwmi Win32_DiskDrive)[0]|select model, @{Name="GB";Expression={$_.size/1GB}}

    Dieser Aufruf verwendet eine Calculated Property, weil sich die Eigenschaft size innerhalb des select-Ausdrucks nicht einfach einer Division unterziehen lässt. Die Umrechnung in KByte oder MB würde analog durch die Verwendung der Konstanten 1KB oder 1MB erfolgen.

    Nachkommastellen reduzieren

    Möchte man zusätzlich den Rattenschwanz an Nachkommastellen stutzen, dann kann man diese mit der Methode truncate() vollständig abschneiden oder mit round() auf die gewünschten Zahl der Stellen runden:

    (gwmi Win32_DiskDrive)[0]|select model,
    @{Name="GB"; Expression={[math]::round($_.size/1GB, 2)}}

    Der Aufruf von truncate() erfolgt nach dem gleichen Muster, nur dass dort der zweite Parameter entfällt, also truncate($_.size/1GB).

    Keine Kommentare