meta data for this page
Übersetzungen dieser Seite:
  • de-informal

Übung: Powershell-Grundlagen

Aufgabenschritte

  1. Erstellen Sie ein Verzeichnis namens powershell und wechseln sie dort hinein.
  2. Erzeugen Sie mit Hilfe des Cmdlets New-Item die Datei helloworld.txt.
  3. Lassen Sie sich mit Hilfe des Cmdlets Get-ChildItem den Inhalt des aktuellen Verzeichnisses anzeigen.
  4. Lassen Sie sich mit Hilfe des Cmdlets Get-ChildItem den Inhalt des Verzeichnisses C:\Windows\System32 anzeigen ohne dorthin zu wechseln. Beschränken Sie die Ausgabe auf alle Dateien, die mit „ca“ beginnen und die Erweiterung .exe haben.
  5. Verwenden Sie den Pipe-Operator | um die Ausgabe an das Cmdlet Get-FileHash weiterzugeben und die Hash-Werte der gefundenen Dateien berechnen zu lassen. Passen Sie Ihre Befehlsoptionen so an, dass SHA1 als Hash-Algorithmus verwendet wird.
  6. Erzeugen Sie eine Variable, die Ihren Namen beinhaltet. Erzeugen Sie eine zweite Variable, die Ihr ungefähres Alter in Tagen enthält (Formel 365 * Alter ist ausreichend). Erzeugen Sie unter Verwendung beider Variablen eine Ausgabe, die in etwa so lautet: „Kevin ist über 7000 Tage alt.“
  7. Ermitteln Sie die Länge des gespeicherten Namens.
  8. Verwenden Sie die Methode Contains() um zu überprüfen, ob der Name den Buchstaben „a“ enthält.
  9. Versuchen Sie der u. a. Zutatenliste die Zutat „Zucker“ hinzuzufügen.
  10. Erzeugen Sie ein neues Listenobjekt (System.Collections.ArrayList) und fügen Sie diesem schrittweise die 4 gewünschten Zutaten hinzu.
  11. Verwenden Sie das weiter oben erzeugte Kommando um die Liste mit den Hash-Werten in einer Variable zu speichern. Geben Sie anschließend aus wie lang diese Liste ist und welchen Datentyp sie hat.
  12. Machen Sie unter Verwendung der soeben erzeugten Variable eine Ausgabe für das erste Element daraus, welche in etwa so lautet: „Die Datei C:\Windows\System32\calendar.exe hat den Hash-Wert DEADBEEF1337.“
  13. Überprüfen Sie, ob die weiter oben festgelegte Namensvariable ein „e“ enthält und geben Sie in Abhängigkeit davon den Text „e ist drin“ oder „kein e drin“ aus.
  14. Nutzen Sie die zuvor belegte Variable mit den Dateinamen und Hash-Werten und geben Sie nur die Hash-Werte ohne Dateinamen oder andere Informationen aus.
  15. Wiederholen Sie dies unter Verwendung der ForEach-Methode der Variable. (siehe hierzu Referenz zur ForEach-Methode einer Collection)
  16. Erzeugen Sie eine Schleife, welche Sie zu Beginn jedes Durchlaufes mit der Frage „Warten?“ um eine Eingabe bittet. Wenn Sie mit „nein“ antworten, soll die Schleife abbrechen. Wenn Sie etwas anderes antworten, soll das aktuelle Datum und die Uhrzeit mittels eines geeigneten Cmdlets ausgegeben werden.
  17. Erzeugen Sie eine Schleife, welche 10 Textzeilen an Ihre bisher leere Datei helloworld.txt anhängt. Die Textzeilen sollen „Hello World number 1!“ bis „Hello World number 10!“ lauten.
  18. Erzeugen Sie eine Schleife, welche 20 nummerierte Kopien Ihrer Datei helloworld.txt erstellt.
  19. Listen Sie unter Verwendung der Cmdlets Get-ChildItem und Select-Object die ersten 5 Einträge im aktuellen Verzeichnis auf. Zeigen Sie im Ergebnis nur die Dateigröße und den Dateinamen an.
  20. Erstellen Sie nun eine Skriptdatei (.ps1), welche folgende Schritte erledigt:
    1. Die Datei helloworld.txt soll gelöscht werden.
    2. Die Datei helloworld.txt soll neu angelegt werden.
    3. Der Nutzer soll zu einer Eingabe aufgefordert werden. Wenn die Eingabe nicht „EOF“ lautet, soll in die Datei helloworld der aktuelle Zeitstempel geschrieben werden und eine erneute Eingabeaufforderung erfolgen. Erst wenn die Eingabe „EOF“ getätigt wurde, soll das Programm weiterlaufen.
    4. Bevor das Programm beendet wird, soll der aktuelle Inhalt der Datei helloworld.txt ausgegeben werden.
    5. Für diese Aufgaben sollen die Cmdlets New-Item, Remove-Item, Get-Date, Get-Content und Out-File verwendet werden.
    6. Das Erstellen und Testen des Skripts kann im Skriptbereich der ISE-Umgebung erfolgen (Ansicht → Skriptbereich).
    7. Abschließend soll das fertige Skript von der Kommandozeile ausführbar sein.

Codebeispiele

# Textausgabe
echo "Hello World!"
echo "The answer to the ultimate question of life, the universe and everything is $(2+5*8)."
 
# Text einlesen
$name = Read-Host -Prompt "Wie heißen Sie?"
echo "Hello $name!"
 
# Listen und Methodenaufrufe
$zutaten = "Eier", "Milch", "Mehl"
$zutaten.Length
$zutaten.Count
"Rhabarberbarbarabarbarbarenbier".Length
"Rhabarberbarbarabarbarbarenbier".Count
 
# Kontrollstruktur If
if (2 -eq 2) { echo "gleich" } else { echo "nicht gleich" }
 
# Schleifen
foreach($z in $zutaten) { echo $z }
 
$password = "too short"
while ($password.Length -lt 20) { $password += "!" }
echo $password
 
for ($var = 0; $var -lt 5; $var++) { echo $var }
 
# Dateisystem
Get-ChildItem | Select Time,Name