Das ist das ultimative PowerShell Tutorial. Hier lernst Du alles zu Konsolen-Programmen und Befehlen von PowerShell, CMD und Bash.
In diesem Tutorial geht (fast) alles ohne ein Graphical User Interface.
Ich stelle heute Dir die PowerShell vor!
- 1 Begriffe klären: Konsole, Shell, CMD, PowerShell und mehr
- 2 Ultimative Produktivitäts-Tipps für die PowerShell
-
3
Die 11 Befehle – PowerShell Tutorial
- 3.1 Ich möchte mit der PowerShell …
- 3.2 Hilfe anzeigen lassen für das PowerShell Tutorial
- 3.3 In anderes Verzeichnis / Ordner wechseln
- 3.4 Dateien und Ordner anzeigen lassen
- 3.5 Datei verschieben / umbenennen
- 3.6 Datei löschen
- 3.7 Ordner erstellen
- 3.8 Datei bearbeiten / erstellen
- 3.9 Installationsort eines Programms ausgeben lassen
- 3.10 Datei downloaden
- 3.11 Programm ausführen
- 3.12 Administrator-Rechten Dateien / Ordner ausführen
- 4 PowerShell Programmierung
- 5 10 Tipps für die Nutzung von PowerShell
Begriffe klären: Konsole, Shell, CMD, PowerShell und mehr
- Konsole ist eine Eingabe-Aufforderung oder Prompt (engl. abfragen, auffordern), die nach einer Texteingabe fragt und meistens eine Textausgabe anzeigt.
- Windows CMD.exe nennt sich die Windows-Eingabeaufforderung von Windows NT (New Technology) Line und React-OS (Operating System).
- Bash = Shell ist ein Unix Projekt unter GPL und eine Konsole für Linux und UNIX-Systeme ist. Diese hat Brian Fox entwickelt.
- Windows PowerShell basiert auf Dot-Net seit 2009 und ist eine plattformübergreifende Konsole mit der MIT-Lizenz.
Eine BAT-Datei (engl. Batch – Stapel) ist eine Script mit fertigen Konsolen-Befehlen für Windows. Mit einem Klick auf die Datei führt der Computer die Befehle aus. Kontrollstrukturen wie Schliefen und Variablen sind möglich.
PowerShell erklärt
PowerShell ist ein plattformübergreifendes Framework zur Einstellung, Administration und Automatisierung von z. B. Microsoft Systemen. Zu der PowerShell gehört ein Kommandozeilen-Interpreter und eine Sprache zum Skripten von Kommandos.
PowerShell gehört zu den .NET Framework. .NET ist eine Sammlung von Entwicklerwerkzeugen und Klassen-Bibliotheken, die auf der Common Language Runtime basiert. Seit 2016 ist PowerShell plattformübergreifend (nicht nur auf Windows beschränkt) und Open Source.
Hinter CMD.exe steht der Kommandozeilen-Interpreter COMMAND.COM, der die Eingaben überprüft. Windows PowerShell arbeitet mit der PowerShell-Engine als Kommandozeilen-Interpreter
PowerShell Bedienung in 5 Schritten
Eine Konsole arbeitet nach dem gleichen Schema:
- Der Nutzer gibt ein Befehl ein
- Der Nutzer startet den Befehl mit ENTER
- Der Computer führt den Befehl aus (und gibt Text aus)
- Der Computer stellt ein neues Eingabefeld zur Verfügung.
- Gehe zu Schritt 1
PowerShell vs. Grafische Nutzeroberfläche
Wann verwende ich eine Kommandozeile? Wann die GUI? Was sind die Vor- und Nachteile der Eingabemöglichkeiten?
Kommandozeile | Grafische Nutzeroberfläche |
Geringere System-Ressourcen zur Darstellung | Weniger „gegoogle“ nach Kommandozeilen-Befehle und Fehlern (wenn diese gut ist) |
Optionen mit help-Flag schnell auffindbar | Grafische Verbesserungen wie Schriftarten, Drop-Down-Menus |
Vereinfachte Automation und Wiederholungen | Eingewöhnungszeit von GUIs ist im Vergleich zur Kommandozeile gering |
Entwickeln von Prozeduren | Einfache Bedienung (für nicht ITler) gedacht |
Ein GUI verwenden, wenn …
- Du eine Standard-Aufgabe erledigst.
- eine erprobte GUI verfügbar ist.
- Du die Befehle nicht kennst.
- keine Kommandozeile verfügbar hast
Die Kommandozeile verwenden, wenn …
- Du spezielle Aufgaben erledigen möchtest.
- Du eine Debugging-Möglichkeit brauchst.
- Du erhöhte Bearbeitungsgeschwindigkeit brauchst.
- die GUI Sche*** ist.
Skripten mit PowerShell
Zur Automation brauchst Du ein Skript, welches Du auf der PowerShell ausführen kannst. Die PowerShell hat wie jede Programmiersprache ein paar Besonderheiten. Statt ein Kleiner-als-Zeichen verwendest Du -lt , um einen Vergleich darzustellen.
for($counter=0;$counter -lt 9;$counter++) {
Write-Host „Wiederhole die Schlefe $counter“
}
Anwendungsgebiet PowerShell
Die plattformübergreifende PowerShell ist ultra vielseitig einsetzbar. Konfiguriere mit der PowerShell z. B.:
- Windows Server ab 2008
- Active Directory (Verwaltung von mehreren Windows Computern)
- Domain Name System (Auflösung von IP-Nummern in Domain-Adressen)
- Hyper-V (Virtualisierungsumgebung von virtuellen Maschinen)
- ISS Web Service (Microsoft Web Server)
- Konfiguration von Netzwerk, Festplatten, Proxy usw.
Mehr zu den Möglichkeiten mit der PowerShell findest Du untern Linetworks.
Ultimative Produktivitäts-Tipps für die PowerShell
Damit Du schnell und effizient mit PowerShell arbeitest, lerne die folgenden Shortcuts auswendig. Mit Rechtsklick auf den PowerShell Menüleiste passe unter > Einstellungen > Optionen, einige Shortcuts nach Deinen Wünschen an.
Shortcut | Bedeutung / Wirkung |
Strg + C (nicht kopieren) | Stoppt den laufenden Vordergrund-Prozess (hart) |
Strg + Z | Anhalten des Vordergrund-Prozesses |
Strg + L | Ein- und Ausgaben leeren |
Pfeil nach oben / unten | Durch alle vorherigen Eingaben blättern |
Tab | Der Shortcuts vervollständigt ein Kommando, Dateiname, Pfad für Dich automatisch |
Typen von Konsolen / Shell / CMD
- Betriebssystem-Konsolen: cmd.exe, DEC Digital Command Language
- Anwendung-Konsolen: Anwendungen auf Konsolen-Basis
- Parameter: Informationen zur Ausführung des Programms, die den Ausführungsverlauf verändern
- Prompts: Nach Ausführung fragt das Programm nach verschieden Parametern
Die 11 Befehle – PowerShell Tutorial
Wenn Du diese 11 Befehle für Bash und CMD aus diesem PowerShell Tutorial kennst, kannst Du 80 % von der tagtäglichen Operation innerhalb der Konsole / CMD / Bash / Shell.
Lese Dir die folgende Tabelle durch und scrolle zu dem betreffenden Abschnitt:
Ich möchte mit der PowerShell …
PowerShell Windows | Bash Linu | |
Hilfe zu einem Befehl anzeigen lassen | help programmname | programmname –h [alternativ –help] |
in anderes Verzeichnis / Ordner wechseln | cd Ordnername[/Ordnername/…] | cd Ordnername[/Ordnername/…] |
Dateien und Ordner anzeigen lassen | dir [/Ordnername/…] | ls [/Ordnername/…] |
Datei verschieben | move altordner\dateiname.end neuordner\ dateiname.end | mv altordner/dateiname.end neuordner/ dateiname.end |
Datei löschen | del Dateiname.end | rm Dateiname.end |
Ordner erstellen | mkdir Ordnername | mkdir Ordnername |
Datei bearbeiten / erstellen | notepad [Dateiname alt/neu] | vi [Dateiname alt/neu] |
Installationsort eines Programms ausgeben lassen | where programmName | where programmName |
Datei downloaden | curl [https://url] –output [file.endung] | curl [https://url] –output [file.endung] |
Programm ausführen | programmName | programmName oder ./programmName |
Administrator-Rechten Dateien / Ordner ausführen | runas /noprofile /user:Administrator cmd | sudo [jeder Befehl außer cd] |
Hilfe anzeigen lassen für das PowerShell Tutorial
Nehmen wir eine für das Tutorial an, Du hast ein tollenSDKKonsolenProgramm. Du kennst die Befehle nicht und eine Dokumentation findest Du im Internet nicht. Mit dem Help-Flag kannst Du Dir alle Befehle vom tollenSDKKonsolenProgramm ausgeben lassen, ohne nach irgendwelchen Beschreibungen zu suchen. Ein Befehl setzt sich aus dem Programmnamen, Parameter und Flags / Optionen zusammen. Die Ausgaben des Help-Flags sollten die Befehle des tollenSDKKonsolenProgramm erklären.
PowerShell Windows | Bash Linux | |
Befehl | help | –h oder -help |
Syntax | help programmname | programmname –h [alternativ –help] |
Beispiel | help | Javac -help |
Tipps | Nur für Windows eigene Programme | Für jedes Linux Konsolen Programm |
Die Programmierer folgen normalerweise diesen Konventionen. Wenn Du aber ein neues Programm nutzt, kannst Du kein help-Flag finden. Entweder gibt es keine help-Seite oder die Programmierer „haben einen richtigeren“ Weg gefunden und machen ihr eigenes Ding!
In anderes Verzeichnis / Ordner wechseln
Ein Pfad steht vor dem Eingabefeld in der die Konsole.
Die Konsole kann nur in dem angegebenen Ordner operieren (siehe Pfad). Falls Du ein Programm in einem anderen Ordner ausführen möchtest, dann musst Du das Verzeichnis (change directory) verändern.
PowerShell Windows | Bash Linux | |
Befehl | cd | cd |
Syntax | cd Ordnername[/Ordnername/…] | cd Ordnername[/Ordnername/…] |
Beispiel | cd AMD | cd AMD |
Tipps | Mit Tab kannst Du den Ordnernamen vervollständigen | Mit Tab kannst Du den Ordnernamen vervollständigen |
Dateien und Ordner anzeigen lassen
Die Konsole sagt nicht mehr als den Pfad des Ordners, in dem Du Dich befindest. Der dir- / ls-Befehl gibt Dir alle Dateien, Programmen und Unterordner als Liste aus.
PowerShell Windows | Bash Linux | |
Befehl | dir | ls |
Syntax | dir [/Ordnername/…] | ls [/Ordnername/…] |
Beispiel | dir user | ls user |
Tipps | Mit dir /AH kannst Du Dir versteckte Dateien anzeigen lassen | Mit ls –a kannst Du Dir versteckte Dateien anzeigen lassen |
Datei verschieben / umbenennen
So transferierst Du eine Datei von dem A-Ordner zum B-Ordner.
PowerShell Windows | Bash Linux | |
Befehl | move | mv |
Syntax | move altordner\dateiname.end neuordner\ dateiname.end | mv altordner/dateiname.end neuordner/ dateiname.end |
Beispiel | move c:\users\steff\text.txt C:\users\steff\Downloads | mv c:/users/steff/Downloads/text.txt c:/users/steff/text.txt |
Datei löschen
PowerShell Windows | Bash Linux | |
Befehl | del | rm |
Syntax | del Dateiname.end | rm Dateiname.end |
Beispiel | del text.txt | rm text.txt |
Ordner erstellen
In Windows kannst Du in der grafischen Oberfläche STRG+UMSCHALT+N nutzen, um schnell neue Ordner zu erstellen.
PowerShell Windows | Bash Linux | |
Befehl | mkdir | mkdir |
Syntax | mkdir Ordnername | mkdir Ordnername |
Beispiel | mkdir Garten | mkdir Garten |
Datei bearbeiten / erstellen
Windows bietet „nur“ den grafischen Editor notepad. Linux hat eine Konsolen-intern Editor vi (ausgesprochen wie-ei) für visual editor bzw. vim (m = improved)
PowerShell Windows | Bash Linux | |
Befehl | notepad | vi |
Syntax | notepad [Dateiname alt/neu] | vi [Dateiname alt/neu] |
Beispiel | notepad text.txt | vi text.txt |
Tipps | Öffnet eine graphische Oberfläche | vi ist ein etwas altmodischer (aber schneller Editor), nutze nano für eine modernere Bedingung |
Wenn Du vi nicht magst, ist nano ein Super-Alternative. Die Shortcuts sind „moderner“, dafür ist das Programm nicht auf jedem System verfügbar.
Installationsort eines Programms ausgeben lassen
Falls Du nicht weißt, in welchem Ordner die Java-, Andorid SDK-, VS Code-Installation sich befindet, hilft where.
PowerShell Windows | Bash Linux | |
Befehl | where | which |
Syntax | where programmName | which programmName |
Beispiel | where java | which java |
Tipps | Suche nach .exe Dateien, die DU über die Konsole ausführen willst. Trage neue Ordner in die Umgebungsvariablen ein, um mehr .exe Programm mit der Konsole anzusprechen | Um Variablen dauerhaft hinzuzufügen, führe sudo -H gedit /etc/environment aus und füge eine Zeile hinzu VALUE=WERT . Speichere. Loge Dich ein und wieder aus. Starte die Konsole neu. |
Datei downloaden
Ohne Browser geht’s schneller.
PowerShell Windows | Bash Linux | |
Befehl | curl | curl |
Syntax | curl [https://url] –output [file.endung] | curl [https://url] –output [file.endung] |
Beispiel | curl https://lippke.li –output lippke.html | curl https://lippke.li –output lippke.html |
Tipps |
Programm ausführen
PowerShell Windows | Bash Linux | |
Befehl | Nichts | Nichts oder ./ |
Syntax | programmName | programmName oder im Homeverzeichnis ./programmName |
Beispiel | java | java oder ./java |
Tipps | Nutze den help-Flag (siehe oben), um mehr über die Befehle des Programms zu erfahren | Nutze den help-Flag (siehe oben), um mehr über die Befehle des Programms zu erfahren. |
Du kannst nur ein Programm starten, wenn dieses im gleichen Verzeichnis sich befindet wie der Konsolenpfad. Alternativ hast Du den Ordner des Programms in einer Umgebungsvariablen gespeichert. Mit der gesetzten Umgebungsvariable kannst Du von jedem Ordner aus das Programm aufrufen.
Administrator-Rechten Dateien / Ordner ausführen
Diese Befehle brauchst Du, um in den Gott-Modus zu wecheln.
PowerShell Windows | Bash Linux | |
Befehl | runas /noprofile /user:Administrator cmd | sudo oder |
Syntax | runas /noprofile /user:Administrator cmd | sudo [jeder Befehl außer cd] |
Beispiel | runas /noprofile /user:Administrator cmd | sudo apt-get install java |
Tipps | Du kannst die CMD mit eine Rechtsklick im Admin-Modus starten. | Mit sudo –s kannst Du in den SUPERUSER-Modus wechseln. Das kann gefahrlich sein. Im SUPERUSER-Modus kannst Du das gesamte System mit Allem löschen. |
PowerShell Programmierung
Schleifen foreach
PowerShell ist mehr als nur eine Kommandozeile. Du kannst Skripte mit Syntax, Schleifen, Funktionen und mehr in einem Script (.ps1) erstellen.
Iteriere durch eine Schliefe mit einer foreach.
$einArray = "steffen","coding","hacking","security"
foreach ($keyword in $einArray)
{
Write-Host $keyword
}
Kommentare gehen so:
# Kommentar 1
# Noch mehr Text
Write-Host "Hallo"
<#
langer Text
#>
Konditionen mit PowerShell gehen so:
if($entscheidungsVariabele){
# Verzweigung für Erfüllung
} else {
# Verzweigung für NICHT-Erfüllung
}
-eq = equal = gleich
-gt = greater than = größer als
-lt = lower than = kleiner als
-contains = prüft ob der Wert links im Array rechts von dem Begriff ist
Definiere Variablen:
$name='horst';
$alter= 42
Wenn Du komplexere Programme programmieren willst, ist PowerShell Skript eine Option, aber klassische Programmiersprachen wie Java oder Python sind gute Alternativen.
10 Tipps für die Nutzung von PowerShell
- Get-Help verwenden: Nutze das Mini Programm (Cmdlets)
Get-Help
-, um Informationen zu Programmen und deren Verwendung zu erhalten. Zum Beispiel:Get-Help Get-Process
. - Pipelines effektiv nutzen: PowerShell ermöglicht den Einsatz von Pipelines (
|
) zur Weiterreichung von Daten zwischen Mini Programmen. Das erleichtert das Arbeiten mit verschiedenen Mini Programmen in Kombination. Wenn Du z. B. eine String in eine Datei schreiben willst nutzt Du:"Der Text, den du hinzufügen möchtest." | Out-File -FilePath "C:\Pfad\zur\Datei.txt" -Append
- Filtern mit Where-Object: Das
Where-Object
-Cmdlet ermöglicht es, Objekte basierend auf bestimmten Kriterien zu filtern. Zum Beispiel:Get-Process | Where-Object { $_.CPU -gt 50 }
. - Format- cmdlets verwenden: Die
Format-
Cmdlets wieFormat-Table
,Format-List
undFormat-Wide
ermöglichen es, die Ausgabe für eine bessere Lesbarkeit anzupassen. - Variablen sinnvoll benennen: Benenne Variablen so, dass ihr Zweck klar ist. Dies verbessert die Lesbarkeit des Codes.
- PowerShell-Profile nutzen: Verwende Dein PowerShell-Profil (
$PROFILE
) zum Konfigurieren von benutzerspezifischen Einstellungen und Funktionen, die bei jedem Start von PowerShell geladen werden. - Benutzerdefinierte Funktionen erstellen: Erstelle benutzerdefinierte Funktionen, um wiederkehrende Aufgaben zu automatisieren und Deinen Code zu organisieren.
- Remoting für entfernte Server: PowerShell ermöglicht das Ausführen von Befehlen auf entfernten Servern. Nutze
Enter-PSSession
oderInvoke-Command
, um Befehle auf entfernten Systemen auszuführen. - Objektorientierte Ausgabe nutzen: PowerShell gibt oft Objekte aus. Nutze die Eigenschaften dieser Objekte, um spezifische Informationen zu extrahieren, anstatt auf den gesamten Text zuzugreifen.
- PowerShell-Module verwenden: Mache Dich mit PowerShell-Modulen vertraut. Sie enthalten wiederverwendbaren Code und Funktionen, die Deine Arbeitsabläufe erleichtern können. Du kannst Module mit
Import-Module
oderInstall-Module
hinzufügen.
Das war das zu viel auf einmal? Hier sind die bestehen Cheatsheets zum Download: Microsoft, Rambelling Cookie Monster, Amazon, Netzweise, SANS
thank you
Gibt es auch ein Forum, an das sich ein unbedarfter User mit Fragen wenden kann?
Hallo,
bei mir werden Fragen im Kommentar gestellt. Du bist schon richtig.
if … ist keine Schleife –> daher auch kein „Schleifen-Rumpf“
Eine Schleife hat eine Schleifen-Variable / Iterator – der für jede Blockausführung einen anderen Wert besitzt.
if … ist eine Bedingung –> die erfüllt sein kann oder nicht
… und je nach dem – wird der erste oder zweite Block ausgeführt.
Danke – habe ich korrigiert