aventos
Goto Top

PS .length Werte addieren

Servus

ich habe mehrere Dateigrößen per
$strA = Get-ChildItem C:\Folder\Te*.exe | Select-Object length
$strB = Get-ChildItem Get-ChildItem C:\Folder\Ba*.exe | Select-Object length

auslegesen.

Die Werte werden mir nun wenn ich beide Variablen auslese z. B. so angezeigt:
                                                                                                                                               Length
                                                                                                                                                 ------
                                                                                                                                                 32528
                                                                                                                                                 24576
Jetzt kommen mir mehrere Fragen,

1) wie kann ich erreichen, dass ich NUR die Zahl an sich, ohne dieses Length in der Variable gespeichert habe? Dann könnte ich ja mittels "+" Operator einfach addieren, oder?

2) wie kann ich ansonsten die beiden Werte addieren?

Bitte verzeiht mir dass ich ein absoluter Anfänger in Sachen Powershell bin, hab wirklich kaum Ahnung davon.

LG

Content-Key: 242363

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

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

Member: colinardo
Solution colinardo Jul 01, 2014 updated at 12:20:25 (UTC)
Goto Top
Moin,
kein Problem
(dir "C:\Folder\Te*.exe" | measure -Property Length -Sum).Sum + (dir "C:\Folder\Ba*.exe" | measure -Property Length -Sum).Sum
Grüße Uwe
Member: Aventos
Aventos Jul 01, 2014 at 10:11:44 (UTC)
Goto Top
Wow ging ja schnell und hat geklappt, super!

Gibt es eine Möglichkeit dieses Length aus der Variable rauszubekommen?

Habe nämlich noch den Speicher einer Partition ausgelesen und möchte vergleichen, dieser ist auch wie oben gezeigt formatiert

LG
Member: colinardo
Solution colinardo Jul 01, 2014 updated at 12:20:27 (UTC)
Goto Top
sicher du kannst es z.B. so schreiben dann befindet sich nur der eigentliche Wert in der Variablen:
$wert1 = Get-ChildItem C:\Folder\Te*.exe | select -ExpandProperty Length
oder so:
$wert1 = (Get-ChildItem C:\Folder\Te*.exe).Length
das gilt aber nur wenn es eine einzelne Datei ist. Bei mehreren musst du sie entweder wie oben summieren, oder dann mit foreach() nacheinander durchlaufen.
Member: Aventos
Aventos Jul 01, 2014 at 10:19:59 (UTC)
Goto Top
Habe mich glaube ich falsch ausgedrückt,

habe zusätzlich noch den Freespace von einer Partition in GB ausgelesen, dieser wird ebenfalls in einer Variable gespeichert, allerdings auch wieder wie oben mit einem Zusatz (z. B. Partition X:\ Freespace 100GB) da bräuchte ich dann auch nur die Zahl damit ich die einfach vergleichen kann. Wurde mit gwmi win32_volume gelöst.

Hast du da eine Idee wie sich nur die Zahl speichern lässt?

LG
Member: colinardo
Solution colinardo Jul 01, 2014 updated at 12:20:16 (UTC)
Goto Top
$freespace = (gwmi win32_Volume | ?{$_.Driveletter -eq "C:"}).FreeSpace
Das was du siehst ist nur in der Ansicht so formatiert. Die Speichergrößen wie KB,MB,GB direkt hinter einer Zahl werden automatisch immer zu den passenden Größen in Bytes umgewandelt. Das kannst du selbst überprüfen indem du mal 100MB in eine Powershell-Konsole eingibst und dir dann die Ausgabe anschaust:
PS C:\> 100MB
104857600