WD40 14 Geschrieben 25. April 2016 Melden Teilen Geschrieben 25. April 2016 Hallo, ich wollte mir ein Script schreiben was per Invoke-Command eine Befehl auf verschiedenen Servern ausführt. Allerdings habe ich da so meine Probleme das ganze in das Gewünschte Resultat zu bringen. Zuerst mal hab ich eine Funktion die mir nach dem Aufruf ein Array zurückliefert Das sieht dann so aus: Function Check_DISK () { $HOSTNAME = $args[0] $Label= $args[1] $VOL=Invoke-Command -ScriptBlock {param($HOSTNAME, $Label) Get-Volume -FileSystemLabel $Label } -ComputerName $HOSTNAME -ArgumentList $HOSTNAME,$Label Return $VOL } Aufgerufen wird das dann mit $VOL=Check_DISK "Servername" "Partionname" Um die gewünscht Liste zu bekommen habe ich eine Formatfunktion erstellt die $VOL als Input nimmt Function Ausgabe_Format ($VOL) { $DATE=Get-Date $hostname=$VOL | select -exp PSComputerName $Label=$VOL | select -exp FileSystemLabel $VOL_Size=$VOL | select -exp Size $VOL_Size=[Math]::Round($VOL_Size/1GB,1) $VOL_Free=$VOL | select -exp SizeRemaining $VOL_Free=[Math]::Round($VOL_Free/1GB,1) $VOL_Used=[Math]::Round($VOL_Size-$VOL_Free,1) $VOL_Free_Percent=100-($VOL_Used/$VOL_Size*100) $VOL_Free_Percent=[Math]::Round($VOL_Free_Percent,1) $VOLINFO = New-Object System.Object $VOLINFO | Add-Member -type NoteProperty -name Host -value $HostName $VOLINFO | Add-Member -type NoteProperty -name Label -value $Label $VOLINFO | Add-Member -type NoteProperty -name Size[GB] -value $VOL_Size $VOLINFO | Add-Member -type NoteProperty -name Used[GB] -value $VOL_Used $VOLINFO | Add-Member -type NoteProperty -name Free[GB] -value $VOL_Free $VOLINFO | Add-Member -type NoteProperty -name Percent[%] -value $VOL_Free_Percent Return $VOLINFO | ft -AutoSize } Aufgerufen wird beiden dann so: $VOL=Check_DISK "Server1" "Partionname" $SV1=Ausgabe_Format ($VOL) $VOL=Check_DISK "Server2" "Partionname" $SV2=Ausgabe_Format ($VOL) Wenn ich mir $SV1 und $SV2 aufrufe sieht das so aus: $SV1 Host Label Size[GB] Used[GB] Free[GB] Percent[%] ---- ----- -------- -------- -------- ---------- SV1 FILE 1535,9 439 1096,9 71,4 $SV2 Host Label Size[GB] Used[GB] Free[GB] Percent[%] ---- ----- -------- -------- -------- ---------- SV2 DATA 1023,9 595,6 428,3 41,8 Das geht dann so weiter für 10 Server. Jetzt wolle ich das in ein Object oder Variable zusammenfügen aber ich finde den richtigen Weg nicht. Was noch am besten klappt ist das: $result=$SV1 $result+=$SV2 $result+=$SV3 $result+=$SV4 ..... Wenn ich dann $result ausgebe ist aber von jeder Abfrage die Überschrift noch mal mit drin. $result Host Label Size[GB] Used[GB] Free[GB] Percent[%] ---- ----- -------- -------- -------- ---------- SV1 FILE 1535,9 439 1096,9 71,4 Host Label Size[GB] Used[GB] Free[GB] Percent[%] ---- ----- -------- -------- -------- ---------- SV2 DATA 1023,9 595,6 428,3 41,8 Was ich gerne hätte wäre sowas.... Aber ich kriegs nicht hin. $result Host Label Size[GB] Used[GB] Free[GB] Percent[%] ---- ----- -------- -------- -------- ---------- SV1 FILE 1535,9 439 1096,9 71,4 SV2 DATA 1023,9 595,6 428,3 41,8 SV3 DATA 1023,9 595,6 428,3 41,8 Wenn ich beim füllen von $SV.. mit "-HideTabelHeaders" weglasse hab ich gar keine Überschriften. Was hilfreich wäre: Mit welchem CMDLET bekomme ich die Ausgaben meherer Befehle in ein Variable die ich mit Select und Format Table wieder schön formatieren kann ? Gruß WD40 Ich hab meine Fehler gefunden: Return $VOLINFO | ft -AutoSize das " | ft -AutoSize "macht mein Objekt kaputt. Lass ich das weg ist alles gut :-) Zitieren Link zu diesem Kommentar
daabm 1.354 Geschrieben 27. April 2016 Melden Teilen Geschrieben 27. April 2016 ft macht Text daraus, ja :) Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.