Jump to content

Ausgaben meherer Server in ein Object, Hashtabel oder Array schreiben


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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 :-)

 

 

 

 

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...