meta data for this page
  •  

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
guide:its12:powershell-grundlagen [2022/09/15 00:23] – [Zusätzliche und alternative Materialien] juergenhaasguide:its12:powershell-grundlagen [2023/09/11 19:09] (aktuell) juergenhaas
Zeile 5: Zeile 5:
 Neben den Cmdlets nutzt man in der Powershell selbstverständlich auch Variablen verschiedener Datentypen, Operatoren und andere bekannte Kontroll- und Programmstrukturen. Neben den Cmdlets nutzt man in der Powershell selbstverständlich auch Variablen verschiedener Datentypen, Operatoren und andere bekannte Kontroll- und Programmstrukturen.
 ===== Empfohlene Lernstrategie ===== ===== Empfohlene Lernstrategie =====
-  * Starten Sie die Umgebung **Windows Powershell ISE** und sammeln Sie dort Ihre ersten Erfahrungen mit der Powershell. Den Skript-Editor oben und die Befehlsreferenz rechts können Sie vorerst zugeklappt lassen bzw. zuklappen. Konzentrieren Sie sich anfangs im interaktiven Kommandozeilenfenster auf die automatische Befehlsergänzung und das eingeblendete Befehlsschema. Nutzen Sie ausgiebig das Commandlet ''Get-Help''. {{ :guide:its12:windows_powershell_ise_interactive.png?200|}} {{ :guide:its12:windows_powershell_ise.png?200|}}+  * Starten Sie die Umgebung **Windows Powershell ISE** und sammeln Sie dort Ihre ersten Erfahrungen mit der Powershell. Den Skriptbereich oben und die Befehlsreferenz rechts können Sie vorerst zugeklappt lassen bzw. zuklappen. Konzentrieren Sie sich anfangs im interaktiven Kommandozeilenfenster auf die **automatische Befehlsergänzung** und das eingeblendete Befehlsschema. Nutzen Sie ausgiebig das Commandlet ''Get-Help'' 
 +    * {{:guide:its12:windows_powershell_ise.png?200|}}  
 +    * {{:guide:its12:windows_powershell_ise_interactive.png?200|}}
  
-  * Besuchen Sie für einen schnellen Einstieg das [[https://www.guru99.com/powershell-tutorial.html|Powershell Tutorial for Beginners von Guru99]]. Ignorieren Sie dort anfangs die Abschnitte zu gespeicherten Skripten (*.ps1) und zur Execution Policy.+  * Es wird empfohlen in einem weiteren Fenster die [[uebung:its12:powershell_grundlagen|Übung: Powershell-Grundlagen]] zu öffnen und sich an den Aufgabenschritten und den Codebeispielen dort zu orientieren. 
 +   
 +  * Besuchen Sie das [[https://www.guru99.com/powershell-tutorial.html|Powershell Tutorial for Beginners von Guru99]] falls Sie Hilfe beim Handling brauchen. Ignorieren Sie dort anfangs die Abschnitte zu gespeicherten Skripten (*.ps1) und zur Execution Policy, solange Sie diese nicht benötigen.
  
   * Wechseln Sie von der ISE zur normalen Powershell-Kommandozeile, wenn Sie sich im Umgang mit den Cmdlets ein wenig sicherer fühlen.   * Wechseln Sie von der ISE zur normalen Powershell-Kommandozeile, wenn Sie sich im Umgang mit den Cmdlets ein wenig sicherer fühlen.
  
-  * Versuchen Sie eine Reihe von Powershell-Anweisungen in ein Powershell-Skript zu schreiben (Dateiendung .ps1) und führen Sie dieses Skript aus. Passen Sie ggf. die ExecutionPolicy so an, dass sie für LocalMachine RemoteSigned lautet.+  * Versuchen Sie eine Reihe von Powershell-Anweisungen in ein Powershell-Skript zu schreiben (Dateiendung .ps1) und führen Sie dieses Skript aus. Passen Sie ggf. die **ExecutionPolicy** so an, dass sie für LocalMachine RemoteSigned lautet.
  
  
Zeile 21: Zeile 25:
  
  
-==== Aufgabenschritte ==== 
-  - Erstellen Sie ein Verzeichnis namens powershell und wechseln sie dort hinein. 
-  - Erzeugen Sie mit Hilfe des Cmdlets New-Item die Datei helloworld.txt. 
-  - Lassen Sie sich mit Hilfe des Cmdlets Get-ChildItem den Inhalt des aktuellen Verzeichnisses anzeigen. 
-  - 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. 
-  - 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. 
-  - 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." 
-  - Ermitteln Sie die Länge des gespeicherten Namens. 
-  - Verwenden Sie die Methode Contains() um zu überprüfen, ob der Name den Buchstaben "a" enthält. 
-  - Versuchen Sie der Zutatenliste die Zutat "Zucker" hinzuzufügen. 
-  - Erzeugen Sie ein neues Listenobjekt (System.Collections.ArrayList) und fügen Sie diesem schrittweise die 4 gewünschten Zutaten hinzu. 
-  - 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. 
-  - 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." 
-  - Ü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. 
-  - 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. 
-  - Wiederholen Sie dies unter Verwendung der ForEach-Methode der Variable. (siehe hierzu [[https://ss64.com/ps/foreach-method.html|Referenz zur ForEach-Methode einer Collection]]) 
-  - 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. 
-  - 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. 
-  - Erzeugen Sie eine Schleife, welche 20 nummerierte Kopien Ihrer Datei helloworld.txt erstellt. 
-  - 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. 
-  - Erstellen Sie nun eine Skriptdatei (.ps1), welche folgende Schritte erledigt: 
-    - Die Datei helloworld.txt soll gelöscht werden. 
-    - Die Datei helloworld.txt soll neu angelegt werden. 
-    - 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. 
-    - Bevor das Programm beendet wird, soll der aktuelle Inhalt der Datei helloworld.txt ausgegeben werden. 
-    - Für diese Aufgaben sollen die Cmdlets New-Item, Remove-Item, Get-Date, Get-Content und Out-File verwendet werden. 
-    - Das Erstellen und Testen des Skripts kann im Skriptbereich der ISE-Umgebung erfolgen (Ansicht -> Skriptbereich). 
-    - Abschließend soll das fertige Skript von der Kommandozeile ausführbar sein. 
  
- 
-==== Codebeispiele ==== 
- 
-<code powershell> 
-# 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 } 
-</code>