hermann1514 11 Geschrieben 6. Oktober 2020 Melden Teilen 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 Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 6. Oktober 2020 Melden Teilen 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 Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 6. Oktober 2020 Melden Teilen 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 Zitieren Link zu diesem Kommentar
hermann1514 11 Geschrieben 6. Oktober 2020 Autor Melden Teilen 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 Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 6. Oktober 2020 Melden Teilen 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. Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 6. Oktober 2020 Melden Teilen 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. Zitieren Link zu diesem Kommentar
hermann1514 11 Geschrieben 6. Oktober 2020 Autor Melden Teilen 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 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.