Entdecken Sie eBooks
Kategorien
Entdecken Sie Hörbücher
Kategorien
Entdecken Sie Zeitschriften
Kategorien
Entdecken Sie Dokumente
Kategorien
Überblick
Einsteiger oder auch IT-Profis die von der PowerShell gehört haben aber keine klare Vorstellung haben was PowerShell eigentlich ist.
EDVler die ein privates oder berufliches Interesse haben, sich mit der PowerShell zu beschäftigen zu wollen.
IT-Mitarbeiter die mit der Aufgabenautomatisierung und Konfigurationsverwaltung von IT-System beauftragt wurden und einen Überblick suchen.
Schüler und Studenten die erste Erfahrungen mit dem Thema Programmieren machen wollen.
Dieses PowerShell Tutorial bietet einen einsteigerfreundlichen Überblick und Zusammenfassung der PowerShell. Sie
erfahren in kompakten Schritten was nötigt ist, um PowerShell sicher betreiben zu können und welche Tools sinnvoll sind. In
diesem PowerShell Tutorial bekommen Sie erklärt wie PowerShell und Tools installiert werden und wie Sie diese benutzten.
Dieser PowerShell Tutorial zeigt Ihnen Einfach und Verständlich für was und für wenn PowerShell sinnvoll ist und klärt
wichtige Bergriffe, um im PowerShell-Jungle überleben zu können.
Für Ihre ersten Schritte bekommen Einsteiger das Verständnis an die Hand, um autark kleinere Aufgaben zu lösen. Dieses PowerShell Tutorial zeigt wie Sie die Hilfe
verwenden, Cmdlets finden, benutzen und die Pipeline einsetzen.
https://attilakrick.com/powershell/powershell-tutorial/#bitte-bewerten-sie-diesen-artikel 1/24
24.08.22, 02:27 PowerShell Tutorial einfach & kompakt in 10 Schritten
Für ein schnelles produktives durchstarten am Arbeitsplatz empfehle ich Ihnen Seminare. Egal ob Einsteiger oder Profi fündig werden Sie
unter PowerShell Seminare.
Gerne unterstütze ich Sie in Ihrem PowerShell-Vorhaben.
PowerShell ist ein Microsoft-Framework zur plattformübergreifenden Aufgabenautomatisierung und Konfigurationsverwaltung und bestehend aus
einem Kommandozeileninterpreter und einer Skriptsprache.
Die PowerShell verbindet die aus Unix-Shells bekannte Philosophie von Pipes und Filtern mit dem Paradigma der objektorientierten Programmierung. Im Gegensatz zu
den meisten Shells, bei denen Text eingegeben und zurückgegeben wird, basiert PowerShell auf .NET und akzeptiert .NET-Objekte und gibt diese zurück.
Die PowerShell richtet sich sowohl an Einsteiger als auch an Profis. Diese können wie bisher einfache Befehle an einer Kommandozeile ausführen und miteinander
über Pipeline | verknüpfen oder aber auch komplexe Skript-Programme mit der eigens dafür entwickelten PowerShell Scripting Language schreiben.
HINWEIS - PowerShell wird offiziell mit PS, PWSH und inoffiziell POSH abgekürzt.
Systemingenieure
Administratoren
Service-Techniker
Helpdesk-Mitarbeiter
Skript-Ersteller
Programmierer
IT-Profis
Computer Enthusiasten
Schüler & Studenten
https://attilakrick.com/powershell/powershell-tutorial/#bitte-bewerten-sie-diesen-artikel 2/24
24.08.22, 02:27 PowerShell Tutorial einfach & kompakt in 10 Schritten
Darüber hinaus gibt es über 7.000 Erweiterungen in der PS Gallery, die Sie einsehen und herunterladen können.
Aufgrund stetig steigender Akzeptanz und den plattformübergreifenden Einsatz nutzen Hacker vermehrt die PowerShell als Automatisierungs-Werkzeug. Diese
Tatsache als Argumentationsgrundlage zu benutzen, um die Shell systemweit zu verbieten und zu deaktivieren ist der falsche Ansatz, mal davon abgesehen das ein
Deaktivieren zu 100% nicht möglich ist. Daher sorgt ein generelles Blockieren nur für scheinbare Sicherheit. Den besten Schutz versprechen letztlich die
Schutzmechanismen von PowerShell selbst. Neben Mitteln, die den Missbrauch unterbinden, stehen auch solche zur Verfügung, um verdächtigen und unerwünschten
Aktivitäten zu protokollieren und diese auf die Spur zu kommen.
PowerShell Sicherheit
Einen interessanten Artikel der diverse Shells und Skriptsprachen bzgl. Sicherheitsmechanismen vergleicht finden Einsteiger unter dem Titel: "A Comparison of Shell
and Scripting Language Security".
TIPP - Wenn Sie mit sensiblen Daten umgehen, sollten Sie diese verschlüsseln, um sie vor Unbefugten zu schützen.
https://attilakrick.com/powershell/powershell-tutorial/#bitte-bewerten-sie-diesen-artikel 3/24
Der Kern setzt sich aus Runtime, Host, Scripting Language, Cmdlet, Aliase und Provider zusammen. Kenn und lernen Einsteiger die Begrifflichkeiten zu verstehen.
Daher lohnt sich auch ein Blick in das Kapitel Terminologie in der PowerShell.
24.08.22, 02:27 PowerShell Tutorial einfach & kompakt in 10 Schritten
1. PowerShell Runtime
Die Runtime ist der Kommandozeilen-Interpreter, der die Eingaben verarbeitet und somit das Herz der Shell. Die PowerShell Runtime ist eine Sammlung von .NET-
Klassen, die in der Assembly/Datei System.Management.Automation.dll gespeichert sind.
2. PowerShell Host
Der Host ist die Benutzerschnittstelle zur PowerShell Runtime. In Windows steht standardmäßig die Windows PowerShell (powershell.exe) mit der aktuellen
Version 5.1 zur Verfügung. Der Nachfolger PowerShell 7 (pwsh.exe) steht allen Betriebssystemen (Windows, Linux, MacOS) zur Verfügung. Neben PowerShell-
Befehlen verarbeitet der Host klassisch auch DOS-Befehle wie sie in der Eingabeaufforderung üblich sind. Darüber hinaus gibt es auf dem Markt weitere Hosts, wie
Idera PowerShell Plus oder auch von der Hacker-Szene selbst kompilierte Hosts, um Anwendungsrichtlinien oder Virenscanner zu umgehen
WICHTIG: Die Ausführungsrichtlinien gilt es zu berücksichtigen. Die .PS1- und .PSM1-Dateien gehören zu den ausführbaren
Dateien und unterliegen den Ausführungsrichtlinien (Execution Policies). Diese Richtlinien steuern ob ausführbare Dateien ausgeführt werden und
zu welchen Bedingungen. Wie Ihre Shell aktuell eingestellt ist, ermittelt der Befehl Get-ExecutionPolicy -List. Sollten diese Ausführungsrichtlinien
auf einem Client auf Default oder bei Client und Server auf Restricted stehen, können PS1- und .PSM1-Dateien nicht ausgeführt werden. Mit
erhöhten Berechtigungen können Sie diese Ausführungsrichtlinien mit folgenden Befehlen dauerhaft ändern:
COPY
# Die Ausführungsrichtlinien auf RemoteSigned für den aktuellen Benutzer
Wenn Sie anfange eigene Skripte zu schreiben, achten Sie auf einen sinnvollen Aufbau der in meinem Artikel: "Wie sieht der ideale Aufbau einer
PowerShell-Script-Datei aus" beschrieben wird.
In der Kombination von Cmdlets wird die Nutzbarkeit und Lesbarkeit von Skripten und Befehlen durch strikte Namenskonventionen gewährleistet. Der Cmdlet-Name
folgt der Konvention Tätigkeit-Tätigkeitsbereich (Verb-Substantiv), zum Beispiel Get-Help, Set-Location oder Stop-Process. Daher wird ein Cmdlet genau an eine
Aufgabe ausgerichtet, z.B. ermittelt Get-Process die aktuellen Prozesse und ein zweites Cmdlet Stop-Process ist nur für das Stoppen von Prozessen verantwortlich.
Die Objekt-Ausgabe eines Cmdlets, kann über die Pipeline | an ein zweites Cmdlet übergeben werden. Zum Beispiel könnte mit Get-Process | Out-File -
FilePath C:\Temp\LfdProzesse.txt die aktuellen Prozesse in eine Datei geschrieben werden.
Aliase wurden für die gebräuchlisten Cmdlets erstellt aber auch eigene können hinterlegt werden. Aliase erleichtern den Umstieg, da es zum Beispiel für das
Cmdlet Get-ChildItem die Aliase dir und ls gibt. Aliase haben auch die Aufgabe den Tastaturanschlagsaufwand auf erträgliches Maß im Host zu reduzieren. Um
https://attilakrick.com/powershell/powershell-tutorial/#bitte-bewerten-sie-diesen-artikel 4/24
nicht jedesmal Test-NetConnection schreiben zu müssen, gibt es für dieses Cmdlet den Alias tnc. Da Aliase wie Variable gesetzt, geändert oder gelöscht werden
können, sollten Sie die Benutzung von Aliasse in Skripten meiden.
24.08.22, 02:27 PowerShell Tutorial einfach & kompakt in 10 Schritten
5. PowerShell Provider
(PSProvider) und Drives (PSDrive) kann mit Default-Cmdlets auf diverse Technologien dynamisch zugegriffen werden. Zu den Standard
Über PowerShell Provider
PSProvider gehören unter anderem die Registrierungsdatenbank, Windows Umgebungsvariablen, Dateisystem und der Zertifikatsspeicher. Darüber hinaus können
weitere PSProvider über Module installiert und geladen werden, wie z.B. ActiveDirectory, Microsoft Exchange oder der Microsoft SQL-Server.
Um mittels Cmdlet auf diese Technologien zugreifen zu können, werden Laufwerke benötigt, die über Path-Syntax angesprochen werden können. Die folgenden
Beispiele listen den Inhalt des jeweiligen Laufwerks auf: Get-ChildItem -Path C:\, Get-ChildItem -Path HKCU:\ oder Get-ChildItem -Path Cert:\
6. PowerShell Module
PowerShell um Cmdlets, PSProviders, PSDrives, Functions, Variables und ausführbare Skripte. Um einen Nutzen aus einem Module ziehen
Ein Modul erweitern die
zu können müssen zweit Voraussetzungen erfüllt sein.
https://attilakrick.com/powershell/powershell-tutorial/#bitte-bewerten-sie-diesen-artikel 5/24
1. Ein Module muss einmalig installiert werden, z.B. aus der Microsoft PowerShell Gallery im Internet.
24.08.22, 02:27 PowerShell Tutorial einfach & kompakt in 10 Schritten
2. Vor der Benutzung der zusätzlichen Funktionalität muss das Module importiert (d.h. geladen) werden.
COPY
Get-Help -Name 'About_Modules' -ShowWindow
Die Installation
Im aktuellen Windows Client- und Server-Betriebssystem ist die Windows PowerShell bereit integriert (Aktuell Version 5.1). Der offizielle Nachfolger PowerShell 7
muss jedoch für Windows, Linux oder MacOS manuell installiert werde. Beide Versionen parallel zu betreiben ist unproblematisch und zwingend notwendig, wenn keine
Windows-Feature administriert werden sollen.
1. Auf GitHub finden Sie die PowerShell 7 Release Historie. An oberster Stelle klicken Sie auf den Titel der aktuellen PowerShell 7 Version (z.B. v7.0.2 Release of
Powershell - Stand Juni 2020).
2. Downloaden Sie die aktuelle PowerShell 7 Version von GitHub. (z.B. PowerShell 7.0.2 für Windows 64 Bit wäre folgender Download: download/v7.0.2/PowerShell-
7.0.2-win-x64.msi).
3. Starten Sie die Installation mit erhöhten Berechtigungen über die .MSI-Datei und folgen dem Assistenten bis zur Fertigstellung.
4. Nach der Installation finden Sie PowerShell 7 im Startmenü von Windows.
Anmerkung - VS Codium ist identisch im Look & Feel nur ohne Microsoft Branding, Telemetry und Licensing.
VSCode gibt es für dieverse Betriebssysteme und kann als VSCode Installer heruntergeladen und installiert werden. Nach der Installation öffnet sich VSCode
automatisch. Um jedoch für PowerShell einsatzbereit zu sein, benötigen Sie noch ein paar Extensions. Diese Extensions können Sie in VSCode über das 4-Würfel-
Extension-Symbole am linken Rand suchen (ID), finden und direkt installieren [INSTALL].
ID TITEL - BESCHREIBUNG
Windows Terminal:
Windows Terminal ist ein Befehlszeilen-Frontend: Es kann mehrere Terminal-Apps in einem Fenster mit mehreren Registerkarten ausführen. Es bietet sofort
einsatzbereite Unterstützung für Windows-Eingabeaufforderungen, PowerShell 7 Windows PowerShell, PowerShell Core, Windows-Subsystem für Linux (WSL)
und Azure Cloud Shell Connector.
Die wichtigsten Funktionen des Windows-Terminals umfassen mehrere Registerkarten, Bereiche, Unicode- und UTF-8-Zeichenunterstützung, GPU-beschleunigtes
Textrendering-Modul sowie benutzerdefinierte Designs, Formatvorlagen und Konfigurationen. Weitere Details finden Einsteiger auf GitHub.
Quelle: Das Windows Terminal können Sie über den Microsoft Store oder über GitHub (.MsiXBundle-Datei) installieren.
Windows Terminal wird nach der Installation über das Windows Startmenü aufgerufen oder über WIN+R und wt.
Generell gilt das eine Befehlszeile mit Enter (Zeilenumbruch) abgeschlossen wird. Optional können Sie mehrere Befehle in EINER Zeile schreiben dies müssen Sie
jedoch mit einem Semikolon trennen.
Im Host können Sie nun Cmdlets eingeben und die Ausführung mit ENTER anstoßen. Probieren Sie einmal folgendes aus:
COPY
Get-Process
oder
COPY
Get-Process | Format-List
oder
COPY
Get-Process | Out-GridView
BESCHREIBUNG HOTKEY
BESCHREIBUNG HOTKEY
Möchten Sie jedoch ein Skript schreiben oder etwas auf einem Schmirzettel skizzieren dann starten Sie Visual Studio Code aus dem Windows Startmenü und
beginnen eine neue .PS1-Datei über den Menüpunkt File / New File. Hier haben Sie übersichtlich unendlich viel Platz. Kopieren Sie einmal folgende Zeilen in Ihr
.PS1-Dokument:
COPY
Get-Process | Select-Object -First 3
Und speichern dann das Dokument mit CTRL+S ab. Oder noch besser Sie schalten über den Menüpunkt File / Auto Save das automatische speichern dauerhaft
ein.
Setzen Sie Ihren Courser in die erste Zeile und drücken F8. Hiermit wird diese Zeile nun ausgeführt und Sie sehen das Ergebnis im unteren Terminal-Bereich von
VSCode. Wenn Sie jetzt den Courser in die zweite Zeile verschieben und wieder F8 drücken so wird diese ausgeführt und so weiter.
Wenn Sie jedoch die gesamt Skript-Datei ausführen wollen, dann drücken Sie F5, d.h. alle 3 Zeilen werden der Reihe nach ausgeführt und die Ausgabe unten im
Terminal-Bereich angezeigt. Hinweis: Vermutlich ist jetzt die Enttäuschung groß, da in der Ausgabe Text in roter Schrift angezeigt wird. Hierbei handelt es sich um einen
Fehler (Exception). Schuld an diesem Verhalten sind die Ausführungsrichtlinien. Aus Sicherheitsgründen lässt die PowerShell das Ausführen von .PS1-Dateien nicht zu,
um unbedarfte Benutzer zu schützen.
Mit erhöhten Berechtigungen können Sie die Ausführungsrichtlinien wie folgt dauerhaft ändern:
COPY
# Die Ausführungsrichtlinien auf RemoteSigned für den aktuellen Benutzer, den Computer und den aktuellen Host
Um an dieser Stelle nicht zu weit abzuschweifen sollten Einsteiger zeitnah folgende Informationen About Execution Policies bzgl. den Ausführungsrichtlinien lesen.
Nach der Änderung der Ausführungsrichtlinien können Sie Ihr .PS1-Script mit F5 ausführen.
Wollen Sie das gerade eben erstellt .PS1-Skript in einem der o.a. Hosts ausführen, so führen Sie die Datei mit &-Operator aus:
COPY
https://attilakrick.com/powershell/powershell-tutorial/#bitte-bewerten-sie-diesen-artikel
& 'C:\MeinPfad\MeineErstesSkript.ps1' 8/24
24.08.22, 02:27 PowerShell Tutorial einfach & kompakt in 10 Schritten
Tastaturbefehle zu Visual Studio Code (Hotkeys):
BESCHREIBUNG HOTKEY
Programm-Ablauf-Code kann in einer Skript-Datei erfasst werden. Diese Skript-Dateien besitzen die Dateierweiterung .PS1 (PowerShell Script Version 1.0). Eine
.PS1-Datei ist eine einfach Text-Datei die als UTF-8 with BOM gespeichert wurde und kann so von jedem Text-Editor gelesen und bearbeitet werden.
.PS1-Dateien unterliegen den Ausführungsrichtlinien. Informationen darüber finden Einsteiger unter About Execution Policies. Sollten diese auf einem Client
auf Default oder auch bei einem Server auf Restricted stehen können .PS1-Dateien nicht ausgeführt werden.
Mit erhöhten Berechtigungen können Sie diese Ausführungsrichtlinien mit folgenden Befehlen dauerhaft ändern:
COPY
Set-ExecutionPolicy -ExecutionPolicy 'RemoteSigned' -Scope 'CurrentUser', 'LocalMachine', 'Process'
Der enthaltene Programm-Ablauf-Code einer .PS1-Datei wird zeilenweise ausgeführt und kann folgende Elemente enthalten:
Cmdlet
Cmdlets die mittels der Pipeline | verbunden wurden
Eigene Funktionen
Variablen die mit einem $ begonnen werden
Kommentarzeilen die mit # begonnen werden
Kommentarblöcke die mit <# eingeleitet und mit `#> ausgeleitet werden
Schleifen und Verzweigungen
Signatur
COPY
<# Dieser Text ist Bestandteil eines: Kommentarblocks #>
function Gib-TageBisNeuJahr()
$Jetzt = Get-Date
Gib-TageBisNeuJahr
Wollen Sie eine .PS1-Skript-Datei in einem PowerShell Hosts ausführen, so führen Sie die Datei mit &-Operator aus:
COPY
& 'C:\MeinPfad\MeineErstesSkript.ps1'
Pipeline Objekte
Die PowerShell ist ein objektorientierte Kommandozeileninterpreter. Daher sollte man sich schnell mit diesem objektorientierten Ansatz anfreunden. Cmdlets wurden
für den Umgang mit Objekten entworfen. Objekte können Eigenschaften (Properties), Methoden (Methods) und Ereignisse (Events) besitzen. Ein Objekt setzt sich aus
strukturierten Informationen zusammen und ist mehr als nur die Zeichenfolge, die auf dem Bildschirm angezeigt wird Die zuerst nicht sichtbaren Informationen können
bei Bedarf genutzt werde.
https://attilakrick.com/powershell/powershell-tutorial/#bitte-bewerten-sie-diesen-artikel 9/24
24.08.22, 02:27 PowerShell Tutorial einfach & kompakt in 10 Schritten
Das Cmdlet Get-Member zeigt den Typ, die Eigenschaften und Methoden und Ereignisse von Objekten an. Die aktive und häufige Benutzung von Get-Member für
Analysezwecke ist ratsam, da Sie so Antworten auf die Fragen bekommen: "Was habe ich für ein Objekt?" und "Was kann ich mit dem Objekt anfangen?".
COPY
# Welche Objekte bekomme ich von Get-ChildItem und was kann ich mit diesen anfangen?"
TIPP: Da Get-Member für Analysezwecke temporär benutzt wird verwenden Sie einfach den Alias gm.
Eine Cmdlet-Objekt-Ausgabe wird in der Pipeline abgelegt und im Weiteren von der PowerShell analysiert, um Rückschlüsse ziehen zu können wie diese an das
darauffolgende Cmdlet gebunden werden muss. Dieses Model ist anfangs komplex, jedoch ergeben sich dadurch in der Praxis auch Vorteile beim Filtern und
Verarbeiten von Informationen, wie folgende zwei Beispiele verdeutlichen sollen.
Das Erste Beispiel
1. listet mit Get-ChildItem Dateien -File in C:\Windows auf,
2. filtert mit Where-Object Dateien die größer oder gleich 10KB sind,
3. gruppiert mit Group-Object diese nach der Eigenschaft Extension und
4. sortiert mit Sort-Object das gruppierte Ergebnis absteigend -Descending nach der Anzahl der Gruppenelemente:
COPY
Get-ChildItem -Path 'C:\Windows' -File | Where-Object -Property 'Length' -GE -Value 10KB | Group-Object -Property 'Extension
TIPP: Sie können sich Zwischenergebnisse anzeigen lassen, in dem Sie nur einen Teil von Beginn bis vor jeder Pipeline markieren und dann diese
Auswahl mit F8 ausführen.
Das zweite Beispiel
COPY
Get-Process | Where-Object -Property Company -Like -Value 'Microsoft*' | Sort-Object -Property WorkingSet64 -Descending -Pipe
COPY
# Installiert, soweit vorhanden Hilfeartikel für alle Module auf den Rechner:
Einige Fehlermeldungen könnten im Anschluss auftauchen, da nicht alle Module downloadbare Hilfetext in Englisch haben. Daher können wir diese Fehler
ignorieren.
COPY
# Überblick aller About-Artikel:
In der letzten Spalte werden eininge Artikel kurz beschrieben und in der ersten Spalte Name können Sie vom Artikelnamen ableiten um was es in diesem About-Artikel
geht. Angezeigt wird der Inhalt wie folgt:
COPY
# Zeigt den Inhalt von about_Remote im Host an:
# Darüber hinaus können Einsteiger auch jeden Artikel Online lesen, tauschen Sie dazu einfach am Ende des Urls den about-Name
Start-Process -FilePath 'https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_remote'
Hier eine Überblick von Artikel die man als Anfänger gelesen haben sollte:
ABOUT-NAME BESCHREIBUNG
about_Wildcards Platzhalter-Zeichen
about_Variables Variablen
about_Automatic_Variables Automatische/Dynamische
Variablen
https://attilakrick.com/powershell/powershell-tutorial/#bitte-bewerten-sie-diesen-artikel 11/24
24.08.22, 02:27 PowerShell Tutorial einfach & kompakt in 10 Schritten
ABOUT-NAME BESCHREIBUNG
about_Environment_Variables Windows
Umgebungsvariablen
Am Anfang jeder Lösung steht die Suche nach dem passenden Cmdlet, um eine kleine Teilaufgaben zu erledigen die einem Schritt weiter Richtung Wunschergebnis
bringt. Zum Beispiel befinden sich in meiner PowerShell z.Zt. 100 Module mit insgesamt ca. 3.000 Cmdlets. Natürlich kenn ich nicht alle Cmdlets persönlich - Man muss
nur das eine welche finden das das aktuelle Problemchen löst. Wenn Sie das Problem genau kenn, gibt es mehrere Möglichkeiten, die zielführend sind.
COPY
# ? Ein Cmdlet über dessen Namen finden (AUFGABE: Die Verbindung zu einem Remote-Host testen):
# ? Ein Cmdlet über die Tätigkeit (Verb) finden (AUFGABE: Etwas beenden/stoppen):
# ? Ein Cmdlet über den Tätigkeitsbereich (Noun) finden (AUFGABE: Etwas mit Diensten machen):
# ? Ein Cmdlet über den Parameter-Namen finden (AUFGABE: Alle Cmdlets die eine Tätigkeit auf einem Remote-Host ausführen):
# ? Sämtliche Cmdlets über den Module-Name finden (AUFGABE: Alle Cmdlets die das Windows-Update-System steuern):
Get-Module -ListAvailable
# ? Ein nicht installiertes Cmdlet über die PS Gallery finden (AUFGABE: Welches Modul muss ich installieren um Invoke-SqlCmd
TIPP: Da Get-Command oft temporär verwendet wird, ist die Benutzung des Alias gcm effizienter und erlaubt. Lesen Sie auch: "Wie kann ich ein mir
unbekanntes PowerShell Cmdlet finden".
Wenn das vermeintlich benötigte Cmdlet gefunden wurde, sollte man sich vergewissern ob das Helferlein, das tut was man vermutet. Auch ist jetzt wichtig zu
https://attilakrick.com/powershell/powershell-tutorial/#bitte-bewerten-sie-diesen-artikel
verstehen wie das Cmdlet benutzt wird. Für jedes Cmdlet gibt es einen eigenen Hilfeartikel. Diese Hilfe kann wie folgt angezeigt werden: 12/24
24.08.22, 02:27 PowerShell Tutorial einfach & kompakt in 10 Schritten
COPY
# Zeigt die vollständige Hilfe von Get-Command im PS Host an: Get-Help -Name 'Get-Command' -Full # Zeigt die vollständige Hil
Der Aufbau eines Cmdlet-Hilfeartikels ist standardisiert und besteht aus den folgenden Bereichen:
BEREICH BESCHREIBUNG
Für das erste Verstehen eines neues Cmdlets sollten Einsteiger sich auf die Bereiche Synopsis, Examples und Syntax fokussieren. Für die Syntax gibt es die
folgende About-Seite.
COPY
Get-Help -Name 'about_Command_Syntax' -ShowWindow
Der meist verwendeten Tätigkeitsablauf ist die Datenbeschaffung / Erzeugung und die Aufbereitung dieser für den weiteren Verwendungszweck. Hierzu gehören
Aufgaben wie filtern, selektieren, sortieren, konvertieren und ausgeben der Daten. Diesen Pipeline-Workflow könnten man in Reihe wie folgt beschreiben:
Im folgenden Beispiel möchte ich im Detail auf die einzelnen Schritte einmal eingehen.
AUFGABENSTELLUNG: Es sollen alle SvcHost-Dienste aufgelistet werden. Diese Liste soll übersichtlich nach Dienst-Starttyp und sowie den aktuellen Dienst-Status in
Excel angezeigt werden.
In der Regel besitzen Cmdlets die Informationen abrufen können die Tätigkeit Get. Einen Überblick dieser Cmdlets erhalten Sie mit Get-Command -Verb Get.
COPY
# Alle Dienste ermitteln
Get-Service
Dieser Schritt kann optional nach jedem weiteren Schritt wiederholt werden da sich die Cmdlet-Ausgabe ändern könnte. Mit Get-Member erhalten Sie wichtige
Informationen über das Pipeline-Objekt. Dazu gehören der TypeName des Objektes sowie dessen Member wie Properties, Methods und Events. Da dieser
Analyseschritt nur temporär ist können Sie der einfachheithalber den Alias gm verwenden.
https://attilakrick.com/powershell/powershell-tutorial/#bitte-bewerten-sie-diesen-artikel 13/24
24.08.22, 02:27 PowerShell Tutorial einfach & kompakt in 10 Schritten
COPY
# Um welches Objekt handelt es sich und was kann es?
Get-Service | Get-Member
# Oft ist es auch hilfreich sich die enthaltenen Werte der Objekt-Eigenschaften anzeigen zu lassen:
Nach dem wir nun wissen welche Objekte wir zurückbekommen, wie benötigte Eigenschaften heißen und wie Daten in diesen Eigenschaften gespeichert wurden
können wir mit Where-Object die Pipeline-Objekte filtern.
COPY
Get-Service | Where-Object -Property 'BinaryPathName' -Like -Value 'C:\Windows\System32\SvcHost.exe*'
Where-Object ist ein sehr mächtiges Filter-Cmdlet. Schauen Sie sich dazu auch einmal die Bereich Parameters, Examples und RelatedLinks des dazugehörigen
Hilfeartikels bzgl. dem Parameter -FilterScript an.
Vielleicht sollten Sie an dieser Stelle den 2. Schritt Get-Member nochmals auszuführen, da sich die Rückgabe und somit die Pipeline-Objekte geändert haben könnten.
Jetzt können wir die Objekte auf die nur noch benötigten Eigenschaften hin filtern.
COPY
Get-Service | Where-Object -Property 'BinaryPathName' -Like -Value 'C:\Windows\System32\SvcHost.exe*' | Select-Object -Proper
Denken Sie daran evtl. an dieser Stelle den 2. Schritt Get-Member nochmals auszuführen, da sich die Rückgabe und somit die Pipeline-Objekte geändert haben
könnten.
Die so aufbereiteten Daten können nun gruppiert oder/und sortiert werden, um die Lesbarkeit der Zielführung zu unterstützen.
COPY
# Gruppieren:
# oder Sortieren:
Auch hier könnten Sie den 2. Schritt Get-Member nochmals auszuführen, da sich auch hier die Rückgabe und somit die Pipeline-Objekte geändert haben könnten.
Pipeline-Objekte können in dieverse Formate konvertiert werden. Hierzu gibt es jeweils eigene Cmdlets. Einen Überblick erhalten Einsteiger mit Get-Command -Verb
'ConvertTo', 'Export', 'Format' -Module 'Microsoft.PowerShell.Utility'.
Das aktuelle Endergebnis kann nun in Excel angezeigt werden, wenn wir die Pipeline-Objekte in das CSV-Format konvertieren.
COPY
# Als Wert-Trennzeichen wird das ; (-Delimiter ';') verwendet:
Da sich auch hier die Rückgabe und somit die Pipeline-Objekte geändert haben könnten, prüfen Sie dies evtl. wieder mit Get-Member.
Die Shell liefert viele diverse Cmdlets die die Pipeline-Objekte auf ein anderes Medium ausgeben:
COPY
Get-Command -Verb Out, Export -Module 'Microsoft.PowerShell.Utility'
Die nun so aufbereiteten CSV-Daten können z.B. mit Set-Content ins Dateisystem geschrieben werden.
https://attilakrick.com/powershell/powershell-tutorial/#bitte-bewerten-sie-diesen-artikel 14/24
24.08.22, 02:27 PowerShell Tutorial einfach & kompakt in 10 Schritten
COPY
# Die CSV-Daten in die Datei C:\Temp\Services.csv schreiben:
Die folgende Terminologie sowie die TOP 10 Elemente können Sie sich als PDF-Datei downloaden, um sie später griffbereit als Überblick und zum Nachschlagen zur
Seite zu haben.
COPY
┏BZ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
gci
ls
dir
...
┗L┛
COPY
Get-ChildItem -Path 'C:\' # FileSystem (Dateisystem)
┗PD━━━━━━━━┛ ┗PP━━━━━━━━━━━━━━━━━━━━━━━┛
Terminologie Operator:
COPY
┏W━━━━━━━━━━━━━━┓ ┏O━━┓ ┏W━━━━━━━━━┓
┗*┛ ┗?┛
Terminologie Variable:
COPY
$Planet = "Pluto"
COPY
$MyNotePad = [System.Diagnostics.Process]::Start('notepad')
┗O┛ ┗O━┛
$MyNotePad.StartTime
┗OB━━━━━━┛ ┗MP━━━━━┛
┗O┛
$MyNotePad.WaitForExit(2500)
┗OB━━━━━━┛ ┗MM━━━━━━━━━━━━━┛
┗O┛ ┗MMA━┛
*, ? Wildcards Platzhalterzeichen
T Verb Cmdlet-Tätigkeit
+ - * / % ... Arithmetik: 10 + 4
-f Formatierung: 'Hallo {1}!
{0:dd.MMM.yy}' -f (Get-Date),
'Würzburg'
[Decimal] Dezimalzahl ;
$[-79.228.162.514.264.337.593.543.950.335,
2^{96}]$: [Decimal]::Round(0.987665,2)
[MailAddress] E-Mail-Adresse: [MailAddress]'Attila
Krick<info@attilakrick.com>'
[PhysicalAddress] MAC-Adresse: [PhysicalAddress]'B8-31-
B5-3D-17-EC'
[Xml] XML: [xml]'<vom>2020-03-12</vom>'
$env:... Umgebungsvariablen; s.
Autovervollständigung
Spannende Ressourcen
PS Wissen
Meinen YouTube-Kanal zum Thema.
Prüfen Sie Ihr Verständnis über PowerShell in einem Wissenstest. Jeder Wissenstest besteht aus 6 zufälligen Fragen. Der Test ist kostenlos, kann anonym erfolgen und
die Auswertung erfolgt unmittelbar im Anschluss. Zu gewinnen gibt es Stolz und Ehre. Übersicht der PowerShell Wissenstests
PS-Modul AKPT
Das PS-Modul AKPT enthält nützliche Cmdlets, Wissen zum Nachschlagen, viele praktische Beispiele und meine Schulungsunterlagen für Einsteiger und Profis.
COPY
# AKPT in der PS-Gallery
Ein praktisches Benutzer-Interface mit einem GUI-Designer. Dieser grafische Editor ist eine Web-Anwendung und kann im Browser benutzt werden. Mit dem Designer
https://attilakrick.com/powershell/powershell-tutorial/#bitte-bewerten-sie-diesen-artikel 20/24
können Sie Windows Fenster zeichnen. Das so entstandene Script kann kopiert werden, um anschließend die Logik zu implementieren. Schade ist leider, dass der
Designer nicht auf WPF basiert, sondern nur auf der älteren WinForms-Technologie. Aber es ist Land in Sicht - eine WPF-Variante ist im ALpha-Stadium.
24.08.22, 02:27 PowerShell Tutorial einfach & kompakt in 10 Schritten
Sie haben die PowerShell bereits produktiv im Einsatz und wollen eigene Cmdlets schreiben? Sie wollen Ihre Scripte automatisch testen oder eigene Module im
Unternehmen verteilen? Komplexe Vorgänge verstehen und sich zu eigen machen? Wenn Sie Ihre Kenntnisse auf das nächste Level heben möchten, dann schauen
Sie sich die Agenda PS für Fortgeschrittene und Profis an.
Sie wollen PowerShell produktiv als Administrator-Werkzeug verwenden? Administrative Aufgaben an Nicht-Administratoren delegieren? Die es als Werkzeug für
Penetrations-Tests einsetzen? Dann empfehle ich Ihnen folgendes Seminar: PS Sicherheit, Hacking und Penetration-Test.
https://attilakrick.com/powershell/powershell-tutorial/#bitte-bewerten-sie-diesen-artikel 21/24
24.08.22, 02:27 PowerShell Tutorial einfach & kompakt in 10 Schritten
Egal ob für Sie selbst, Ihre Abteilung oder unterschiedliche Standorte: Sie können die Seminarinhalte frei konfigurieren und um ihre Wunsch-Themen
ergänzen.
Die Shell liegt voll im Trend! Das Diagramm zeigt die weltweite Entwicklung der Suchanfragen für PowerShell, Visual Basic Script und CMD seit 2004. Wer den aktuellen
Stand sehen möchte oder die Parameter verändern will, folgt einfach dem Link zu Google Trends.
Ihre Bewertung
A.Koch 17 SE P 2020
Schön geschrieben, nun weiß ich auch mal was das ist 🙂
Ich möchte gerne Programmieren lernen und weiß nicht genau,
Sehr gut erklärt. Ich arbeite selbst seit August 2020 mit
Powershell. Da ich sehr viel VisualBasic-Wissen habe konnte ich
das gleich auch in Powershell verwenden und damit die ersten
GUI’s erstellen.
Was jetzt noch fehlt zum Glück ist ein Programm mit dem man
die PS1-Dateien in ein ausführbares Programm umwandeln
kann.
Habe zwar schon verschiedene ausprobiert, aber das Ergebnis
war mehr als ernüchternd.
Ich hatte die Hoffnung, dass die EXE-Dateien auf einem PC
Laufen, der über die Policys Restriktionen keine PS1-Dateien
ausführt.
Leider falsch gedacht, diese EXE laufen da leider nicht. Ja noch
nicht mal die Programme mit denen man die PS1 nach EXE
umwandeln kann.
Da wäre mal ein Tipp sehr hilfreich und das letzte Stück vom
Glück wäre vollends perfekt
Hi Roger,
Das freut mich und weiterhin viel Spass und Erfolg mit
PowerShell.
Was Deine Frage angeht: Bestimmt hattest Du den Aufruf
einer .PS1-Datei per powershell.exe kompiliert!? Der Trick
besteht darin die einzelnen Zeilen auszuführen und keine
.PS1-Datei wie folgendes Beispiel zeigt:
https://attilakrick.com/powershell/powershell-tutorial/#bitte-bewerten-sie-diesen-artikel 24/24