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/15 00:23] – [Zusätzliche und alternative Materialien] 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 Skript-Editor | + | * Starten Sie die Umgebung **Windows Powershell ISE** und sammeln Sie dort Ihre ersten Erfahrungen mit der Powershell. Den Skriptbereich |
+ | * {{: | ||
+ | * {{: | ||
- | * Besuchen Sie für einen schnellen Einstieg | + | |
+ | |||
+ | | ||
* 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 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: | ||
- | - 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 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 } | ||
- | </ |