Refnex 10 Geschrieben 17. Oktober 2016 Melden Geschrieben 17. Oktober 2016 Hallo Zusammen, Ich muss ein Kleines Script in Powershell erstellen das Folgendes erledigt: Ausgangs Situation ist ein Cluster mit mehreren Nodes, Das script soll ermitteln Auf welchem Node gerade eine VM Läuft und welcher Node der Owner ist (Bevorzugter Besitzer Node ist ) Wenn ddie VM auf dem Falschen Node Läuft soll soll sie Via Live Migration verschoben werden. Ich habe versuch mit Folgenden Die Situation zu ermitteln: Die Ist situation: $Array_VM_is = @(Get-ClusterGroup | select Name, OwnerNode) Dies gibt mir auch schön aus Auf Welchem Node Gerade Die VMs laufen und Pumpt sie in ein Array. Die Soll Situation: $Array_VM_want =@(Get-ClusterGroup | Get-ClusterOwnerNode ) Zeigt mir dann an welcher der Owner (Bevorzugter Besitzer Node ist ) Wie kann ich nun am besten diese Zwei spalten, Array_VM_is "OwnerNode" mit der Spalte aus Array_VM_want "OwnerNodes" Vergleichen und mir die Falschen Maschienen ausgeben lassen ? Ich habe es schon versucht mit forEach ($Node in $Array_VM_is) { if ($Array_VM_want.OwnerNodes -contains $Node.OwnerNode){ echo $Node.OwnerNode } } #echo $compare jedoch bekomme ich hier nur Die HyperV Nodes Ausgegeben im Format: Name ID State HyperV-Host (Id des Node) Up/Down Das Selbe Ergebniss wenn ich versuche sie mit compare zu Vergleichen Compare-Object -ReferenceObject $Array_VM_is.OwnerNode -DifferenceObject $Array_VM_want.OwnerNodes Kann mir hier jemand weiterhelfen ? Gruss
blub 115 Geschrieben 17. Oktober 2016 Melden Geschrieben 17. Oktober 2016 probiers mal direkt: $New = $Array_VM | Where {$Array_VM_want -NotContains $_} $New.OwnerNodes
Refnex 10 Geschrieben 17. Oktober 2016 Autor Melden Geschrieben 17. Oktober 2016 (bearbeitet) Hi Sorry war noch unterwegs, Kannst du das etwas Spezifizieren ? Meinst du so ? # Auslesen der Ist Situation Ausgabe Name und Host auf dem die VM derzeit läuft $Array_VM_is = @(Get-ClusterGroup | select Name, OwnerNode) # Auslesen des Prefferiertem Node $Array_VM_want =@(Get-ClusterGroup | Get-ClusterOwnerNode ) #| select OwnerNodes $New = $Array_VM_is | Where {$Array_VM_want -NotContains $_} $New.OwnerNodes Dort bekomme ich Gar kein ergebniss wenn ich mir die Variable New.OwnerNodes ausgeben lasse Lasse ich mir aber die Variable New.OwnerNode " ACHTUNG ohne S " bekomme ich das gleiche ergebniss wie vorher. Name ID State HyperV-Host (Id des Node) Up/Down Hierzu sei auch gesagt das bei den Beiden Abfragen in zu den VM und den Hosts die Parameter bei den VM´s in (wo sie Momentan laufen ) als OwnerNode ( ohne s ) angegeben werden und bei der Abfrage Wo sie laufen sollten der Node als OwnerNodes ( mit s ) angegeben wird. Bin echt a bissal ratlos bearbeitet 17. Oktober 2016 von Refnex
BOfH_666 586 Geschrieben 17. Oktober 2016 Melden Geschrieben 17. Oktober 2016 Schau mal bitte, ob Dir das hier weiterhilft: $Wanted = Get-ClusterGroup | Get-ClusterOwnerNode $Is = Get-ClusterGroup | select Name, OwnerNode Foreach($w in $Wanted){ Foreach($i in $Is){ If($w.ClusterObject -eq $i.Name){ $Result = [PSCustomObject] @{ 'Name' = $i.Name 'OwnerNodes' = $w.OwnerNodes 'OwnerNode' = $i.OwnerNode } } } Write-Output $Result }
Beste Lösung Refnex 10 Geschrieben 18. Oktober 2016 Autor Beste Lösung Melden Geschrieben 18. Oktober 2016 Perfect super danke das hat mir sehr geholfen
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden