x1337 10 Geschrieben 7. April 2013 Melden Teilen Geschrieben 7. April 2013 (bearbeitet) Hi, mache derzeit den "Powershell 3.0 für Einsteiger" Kurs auf microsoftvirtualacademy.com Soweit läuft alles gut, jedoch komme ich bei der folgenden Aufgabe nicht weiter: A8: Rufen Sie eine Liste aller Services auf. Sortieren Sie diese Liste nach dem Status und färben Sie die Ausgabe entweder in Rot oder Grün, je nachdem, ob der Status des jeweiligen Service „stopped" oder „running" ist. Hinweis: Verwenden Sie zunächst sort-object von der vorherigen Übung. Verwenden Sie dann die Foreach Schleife, aber statt nur write-host zu nehmen, bauen Sie eine If Abfrage davor ein. Den Status eines Service bekommen Sie wie gewohnt mit $_.status, die möglichen Werte sind „stopped" oder „running". Zur Syntax: Die If Bedingung kommen in runde Klammern (), der Ausgabebefehl in {} Klammern. PowerShell überwacht die gesetzten Klammern und verlangt, dass Sie diese auch schließen. Vergessen Sie nicht die Schlussklammer } des ForEach Cmdlets! Wenn Sie am Ende in einer >> Zeile stehen, schliessen Sie diese mit 2x Return ab, um die umgebrochenen Zeilen auszuführen. Ignorieren Sie die weiteren Möglichkeiten neben „stopped" und „runnign" und verzichten Sie einfachheitshalber auf die ElseIf Abfrage. Habe noch wenig Erfahrungen mit scripten/programmieren - daher auch noch nichts mit If Funktionen zu tun gehabt. Bitte um Info was an -> get-service | sort-object Status | if ($_.Status -eq "Running") {Write-Host -Foregroundcolor blue} falsch ist bearbeitet 7. April 2013 von x1337 Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 7. April 2013 Melden Teilen Geschrieben 7. April 2013 Das hat jetzt nicht mit deinem If zu tun, das ist korrekt. In der Aufgabe steht, dass du eine foreach Schleife nehmen sollst. Bei dir werden dem if das komplette Objekt mit allen Services und nicht ein einzelner Service übergeben. Zitieren Link zu diesem Kommentar
x1337 10 Geschrieben 7. April 2013 Autor Melden Teilen Geschrieben 7. April 2013 Und wie würde das korrekt aussehen? Stehe gerade ziemlich auf der Leitung... Bzw. was wäre zusätzlich an der oben von mir angegebenen If Funktion falsch? Bekomme immer folgende Meldung... if : Die Benennung "if" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbarenProgramms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), undwiederholen Sie den Vorgang.In Zeile:1 Zeichen:36+ get-service | sort-object Status | if ($_.Status -eq "Running") {Write-Host -For ...+ ~~ + CategoryInfo : ObjectNotFound: (if:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 7. April 2013 Melden Teilen Geschrieben 7. April 2013 Ich mache es dir mal beispielhaft vor (du willst ja lernen und keine fertige Lösung) cmd-let | foreach-object { if($_.property -eq 'foo'){ write-host $_.foo } } D.h. alle Objekte aus "cmd-let" werden einzeln im Scriptblock bearbeitet und für jedes Element eine If Abfrage gemacht. 1 Zitieren Link zu diesem Kommentar
x1337 10 Geschrieben 7. April 2013 Autor Melden Teilen Geschrieben 7. April 2013 (bearbeitet) Vielen Dank für deine Antwort :) Was ich jedoch noch nicht verstanden habe, wie ich zu diesem Befehl: Get-Service | ForEach-Object { if($_.Status -eq 'running'){Write-Host $_.Status $_.Name -ForegroundColor red}} die "stopped" Services dazu gebe - dass diese zB auch in grün ausgegeben werden. nochmal eine Pipeline mit den selben Commands für stopped? Danke. bearbeitet 7. April 2013 von x1337 Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 7. April 2013 Melden Teilen Geschrieben 7. April 2013 Schau dir mal die Hilfe zu if an. Zu if gehört optional ein "if else" und/oder ein "else". Zitieren Link zu diesem Kommentar
x1337 10 Geschrieben 7. April 2013 Autor Melden Teilen Geschrieben 7. April 2013 Habe die Angabe wohl falsch verstanden... Dachte man sollte es ohne "else" lösen, daweil stand da nur ohne "elseif". Vielen Dank, habe es dann gleich auf Anhieb geschafft :) 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.