chris123
Goto Top

Ausgabe von Variablen verbinden

Hallo

Ich habe folgdene Variablen:

 

  $foldersize = foreach ($i in $colItems1)
                    {
                    $colItems = (Get-ChildItem -recurse “$rootPath\$i” | Measure-Object -property length -sum)
                     “{0:N2}” -f ($colItems.sum / 1MB) + ” MB,$i”
                    }


und

$freespace = Get-WMIObject Win32_LogicalDisk -filter "DeviceID='x:'" | Format-Table Name, {$_.FreeSpace/1GB}  

 

Wenn ich nun die beiden Variablen verbinden möchte:

$Body = $foldersize + "`n" + $freespace  

Kommt das dabei heraus:

27.492,04 MB,TK
Microsoft.PowerShell.Commands.Internal.Format.FormatStartData Microsoft.PowerShell.Commands.Internal.Format.GroupStartData Microsoft.PowerShell.Commands.Internal.Format
.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.GroupEndData Microsoft.PowerShell.Commands.Internal.Format.FormatEndData

$freespace wird nicht angezeigt. Stattdessen kommt der Hinweis. Was muss ich machen, damit beide Variablen in der Variablen $Body angezeigt werden?

Vielen Dank!

Content-ID: 420790

Url: https://administrator.de/forum/ausgabe-von-variablen-verbinden-420790.html

Ausgedruckt am: 11.04.2025 um 06:04 Uhr

rubberman
rubberman 22.02.2019 um 12:40:21 Uhr
Goto Top
Hänge mal einen "leeren" String davor, damit PS weiß, dass du Strings verketten willst.
$Body = "" + $foldersize + "`n" + $freespace  
Steffen
erikro
erikro 22.02.2019 um 12:54:20 Uhr
Goto Top
Moin,

Du willst ja nur die nackte Zahl. Dann wäre das hier einfacher:

$freespace = $(Get-WMIObject Win32_LogicalDisk -filter "DeviceID='x:'").freespace/1GB  

Dann steht in $freespace nur das Ergebnis.

hth

Erik
chris123
chris123 22.02.2019 um 13:46:10 Uhr
Goto Top
Vielen Dank für Eure Hilfe!
chris123
chris123 22.02.2019 um 13:47:46 Uhr
Goto Top
Danke, das funktioniert!

Was muss ich denn machen, wenn ich den Wert als ganze Zahl haben möchte?

$freespace = $(Get-WMIObject Win32_LogicalDisk -filter "DeviceID='x:'").[System.Math]::truncate.freespace/1GB

ergibt bei mir 0, was nicht richtig ist.
erikro
erikro 22.02.2019 um 13:54:50 Uhr
Goto Top
Moin,

anders herum:

$freespace = [math]::round($(Get-WMIObject Win32_LogicalDisk -filter "DeviceID='x:'").freespace/1GB,0)  

Ansonsten hier eine schöne Seite: https://www.clearbyte.ch/powershell-spass-mit-zahlen/

hth

Erik
77559
77559 22.02.2019 um 14:06:43 Uhr
Goto Top
Es ist mMn widersinning,

  • den -Format Operator zu benutzen und dann hinten nochmal Text anzuhängen.
  • ein Format-* cmdlet zu nutzen wenn Daten weiterverwendet werden sollen. (Das ist der Grund für dein Kauderwelsch)

$foldersize = foreach ($i in $colItems1){
    "{0:N2} MB,{1}" -f ((Get-ChildItem -Rec "$rootPath\$i"|Measure-Object Length -Sum)/1MB),$i  
}

$freespace = (Get-WMIObject Win32_LogicalDisk -filter "DeviceID='x:'").FreeSpace/1GB  

$Body = "{0}`n{1}" -f $foldersize,$freespace  

Gruß
LotPings