meta data for this page
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige ÜberarbeitungVorherige ÜberarbeitungNächste Überarbeitung | Vorherige Überarbeitung | ||
guide:its12:powershell-grundlagen [2022/09/19 19:48] – [Codebeispiele] juergenhaas | guide: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 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 '' | + | * 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 '' |
+ | * {{: | ||
+ | * {{: | ||
- | * Es wird empfohlen sich an den Aufgabenschritten und den Codebeispielen | + | * Es wird empfohlen |
| | ||
- | * Besuchen Sie das [[https:// | + | * Besuchen Sie das [[https:// |
* Wechseln Sie von der ISE zur normalen Powershell-Kommandozeile, | * Wechseln Sie von der ISE zur normalen Powershell-Kommandozeile, | ||
- | * 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 23: | 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: | ||
- | - Verwenden Sie den Pipe-Operator '' | ||
- | - 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, | ||
- | - Versuchen Sie der u. a. Zutatenliste die Zutat " | ||
- | - 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: | ||
- | - Überprüfen Sie, ob die weiter oben festgelegte Namensvariable ein " | ||
- | - 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:// | ||
- | - Erzeugen Sie eine Schleife, welche Sie zu Beginn jedes Durchlaufes mit der Frage " | ||
- | - 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 " | ||
- | - 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, | ||
- | - 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 = " | ||
- | $zutaten.Length | ||
- | $zutaten.Count | ||
- | " | ||
- | " | ||
- | |||
- | # Kontrollstruktur If | ||
- | if (2 -eq 2) { echo " | ||
- | |||
- | # 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 | ||
- | </ |