hermann1514 11 Geschrieben 6. Oktober 2020 Melden Geschrieben 6. Oktober 2020 Hallo, ich möchte gerne eine WHILE oder IF Schleife erstellen, in der das Ergebnis einer Powershellabfrage geprüft wird. Man kann dies ja über weitere Abfragen im Code machen, aber kann man dies auch direkt in einer Schleife machen? Ich habe mal folgendes probiert (z.B. mit den VMWARE Comanndlets): IF ((get-vm $vm | select Powerstate) -like "PoweredOff") {......} Aber das klappt irgendwie nicht. Habe ich da einen Syntaxfehler? Einen direkten Fehler bekomme ich nicht. Danke. Gruß Hermann
BOfH_666 586 Geschrieben 6. Oktober 2020 Melden Geschrieben 6. Oktober 2020 (bearbeitet) Hermann, vielleicht kommst Du selber drauf ... versuch mal nacheinander folgende Code-Zeilen .... "PoweredOff oder so" -like "PoweredOff" "PoweredOff oder so" -like "PoweredOff*" ... und ... was ist der Unterschied? Dein Code sollte vermutlich auch eher so aussehen: IF ((get-vm $vm | Select-Object -ExpandProperty Powerstate) -like "PoweredOff*") {......} bearbeitet 6. Oktober 2020 von BOfH_666
Dukel 468 Geschrieben 6. Oktober 2020 Melden Geschrieben 6. Oktober 2020 (bearbeitet) If ist keine Schleife sondern eine Verzweigung. Hast du das ganze einmal debugged? Sprich was kommt aus den Variablen heraus? Was kommt aus der kompletten Abfrage (... -like ...) heraus? EDIT: http://if-schleife.de/ bearbeitet 6. Oktober 2020 von Dukel
hermann1514 11 Geschrieben 6. Oktober 2020 Autor Melden Geschrieben 6. Oktober 2020 Hey, Mit dem Zusatz -Expandproperty hat es geklappt. Wenn dies nicht gesetzt ist, dann wird ja ein Array zurückgegeben - oder? Und sorry dafür, das sich eine IF Verzweigung mit einer Schleife gleichgesetzt habe Danke. Gruß Hermann
BOfH_666 586 Geschrieben 6. Oktober 2020 Melden Geschrieben 6. Oktober 2020 vor 6 Minuten schrieb hermann1514: Mit dem Zusatz -Expandproperty hat es geklappt. Wenn dies nicht gesetzt ist, dann wird ja ein Array zurückgegeben - oder? Kommt darauf an. .... -ExpandProperty "extrahiert" was auch immer in einer Property enthalten ist ... wenn es Sub-Properties sind, werden diese extrahiert. Wenn es eine einzelne Property ist, wird diese in einen String umgewandelt und als solcher ausgegeben. .... für String-Operatoren wie "-like" ziemlich hilfreich.
Dukel 468 Geschrieben 6. Oktober 2020 Melden Geschrieben 6. Oktober 2020 Was ergibt: (get-vm $vm | Select-Object) und was ergibt: (get-vm $vm | Select-Object -ExpandProperty Powerstate) ? Powershell arbeitet Objectorientiert. Statt Select-Object kann man auch folgendes verwenden: (get-vm $vm).Powerstate Außerdem: Informiere dich über den Unterschid zwischen -eq, -match und -like.
hermann1514 11 Geschrieben 6. Oktober 2020 Autor Melden Geschrieben 6. Oktober 2020 Bei (get-vm $vm | Select-Object) kommt ebend ein Array raus. und bei (get-vm $vm | Select-Object -ExpandProperty Powerstate) kommt nur ein String raus. Das ist wie gewünscht. Auch die einfachere Schreibweise mit (get-vm $vm).Powerstate geht auch - DANKE. Die Unterschiede kenne ich....ist ja auch nur ein Beispiel gewesen. Danke für Eure Hilfe. Gruß Hermann
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