mike0607
Goto Top

PowerShell Byte in GB umrechnen

Hallo PoSH Profis,

vielleicht kann mir einer weiterhelfen?

Ich habe folgendes Script , um mir den Speicher und freien Speicher der lokalen Laufwerke ausgeben zu lassen.

Und ne if Abfrage wenn der Speicherplatz mal knapp werden sollte.

Ich möchte gern das mir statt Bytes - GBytes angezeigt werden.

Habe schon viel probiert aber ich komme irgendwie nicht zurecht.

Wäre toll wenn Ihr mir weiterhelfen könntet.

Hier das kleine Script


Get-WmiObject Win32_LogicalDisk -filter "DriveType=3"

if ((gwmi win32_Logicaldisk -Filter "DriveType=3").FreeSpace -gt 40GB)
{
write-host "Alles Prima"
}
else
{
write-host "Speicher wird knapp!"
}

Danke

Lg Mike

Content-Key: 666925

Url: https://administrator.de/contentid/666925

Printed on: April 19, 2024 at 01:04 o'clock

Member: TK1987
TK1987 May 20, 2021 updated at 08:50:21 (UTC)
Goto Top
Moin,

einfach durch GB teilen.
(gwmi win32_Logicaldisk -Filter "DriveType=3")| Foreach-Object {$_.FreeSpace/1GB}  

ggfs kannst du noch das Anzeigeformat festlegen
"{0,9:f2} GiB" -f ($_.FreeSpace/1GB)   

Gruß Thomas
Member: Doskias
Doskias May 20, 2021 at 08:46:20 (UTC)
Goto Top
Hallo Mike,

ich Prüfe das mit
$LW=get-psdrive|where {$_.free}
Das kannst du dann $LW.free einzeln abfragen.

Das ganze kommt dann in Byte raus und du musst nur noch von Byte auf GB umrechnen.

Gruß
Doskias
Mitglied: 148121
148121 May 20, 2021, updated at May 21, 2021 at 05:28:36 (UTC)
Goto Top
Ich möchte gern das mir statt Bytes - GBytes angezeigt werden.
Da hat einer beim Einheiten umrechnen die Schule geschwänzt face-big-smile. Alter Verwalter ...
1GiB = 1024 * 1024 * 1024 Bytes
Powershell macht dir das Umrechnen einfach indem du "1GB" in die Konsole eintippst, genauso wie mit 5TB, 20MB, 120KB usw, da braucht selbst der Hippi keinen Taschenrechner mehr face-smile ...

Gruß w.
Member: mike0607
mike0607 May 20, 2021 at 09:02:18 (UTC)
Goto Top
Danke an alle für die Hilfe.

ich habe mich sicher etwas Unglücklich ausgedrückt.
Mir ist schon klar "warranty" wie man Umrechnet.

Das habe ich auch schon gefunden und genutzt. Danke Thomas.
(gwmi win32_Logicaldisk -Filter "DriveType=3")| Foreach-Object {$_.FreeSpace/1GB}

Mein Problem ist ich möchte es gern in wie sagt man am besten "schön haben"
So ist die Ausgabe jetzt
DeviceID : C:
DriveType : 3
ProviderName :
FreeSpace : 17949270835
Size : 25516444057
VolumeName : Windows

Und Geil wäre es wenn jetzt das so bleibt und da nur GB statt Byte stehen face-wink
Mitglied: 148121
Solution 148121 May 20, 2021 updated at 09:08:39 (UTC)
Goto Top
@TK1987 hats doch oben schon gepostet?!
gcim win32_Logicaldisk -Filter "DriveType=3" | select DeviceId,VolumeName,@{n="FreeSpace(GB)";e={"{0:F2}" -f ($_.Freespace/1GB)}},@{n='Size(GB)';e={"{0:F2}" -f ($_.Size/1GB)}}  
Member: TK1987
TK1987 May 20, 2021 updated at 09:10:11 (UTC)
Goto Top
Zitat von @mike0607:
Mein Problem ist ich möchte es gern in wie sagt man am besten "schön haben"
So ist die Ausgabe jetzt
DeviceID : C:
DriveType : 3
ProviderName :
FreeSpace : 17949270835
Size : 25516444057
VolumeName : Windows

Und Geil wäre es wenn jetzt das so bleibt und da nur GB statt Byte stehen face-wink
gwmi win32_Logicaldisk -Filter "DriveType=3"| Select-Object DeviceID,DriveType,ProviderName,@{n='Freier Speicher';e={"{0,9:f2} GiB" -f ($_.FreeSpace/1GB)}}, Size, VolumeName  
Member: Doskias
Solution Doskias May 20, 2021 updated at 09:17:23 (UTC)
Goto Top
oder nutze einfach Poershell:
$Server_LW=Invoke-Command [Server] {get-psdrive|where {$_.free}}
foreach ($LW in $Server_LW)
    {
     if (($LW.free/1GB) -le 40)
{write-host "Speicher wird knapp!"}  
}

Ansonsten zeigt dir get-psdirves dir auch GB an, da es automatisch umrechnet.

Gruß
Doskias
Mitglied: 148121
148121 May 20, 2021 updated at 09:18:03 (UTC)
Goto Top
oder nutze einfach Poershell:
Na da kann man nur hoffen das das nichts versautes ist face-smile. Keuschheitsgürtel anzieh .... Duck und wech ,,
Member: mike0607
mike0607 May 20, 2021 updated at 11:13:07 (UTC)
Goto Top
Hallo Doskias,

das find ich gut.

$Server_LW=Invoke-Command [Server] {get-psdrive|where {$_.free}}
foreach ($LW in $Server_LW)
{
if (($LW.free/1GB) -le 40)
{write-host "Speicher wird knapp!"}
}

Kannst Du mir evtl. noch sagen wie ich dein Script so schreibe das ich es auf meinem lokalen PC anwenden kann und nicht über Remote?

Vielen Dank.

Gruß

Mike
Member: Doskias
Doskias May 20, 2021 at 11:20:21 (UTC)
Goto Top
Klar.

Einfach Invoke-command [Server] weglassen. Dann läuft es lokal.

Gruß
Doskias