Design ohne Titel

von Aleksej Kusnir, IT Trainer

Hi, ich bin IT-Berater für Microsoft Technologien seit über 15 Jahren. Im Jahr 2018 habe ich das IT-Trainingsunternehmen Linetwork gegründet. Zudem bin ich Blogger und veröffentliche Tutorials zu PowerShell, Windows Server und und anderen Microsoft Technologien.

Sie möchten Ihre IT-Aufgaben besser und effizienter erledigen und möchten dafür PowerShell nutzen? In diesem PowerShell Tutorial lernen Sie die notwendigen Grundlagen. Mit Beispielen aus der Praxis können Sie die gezeigten Aufgaben einfach nachvollziehen. In dieser PowerShell Einführung möchten wir Sie in mehreren Kapiteln durch die verschiedenen Techniken von PowerShell begleiten. Angefangen von den einfachen Grundlagen bis hin zu praxisorientierten Skripten die Ihren Arbeitsalltag erleichtern werden.

PowerShell Tutorial - Schritt für Schritt Anleitung

PowerShell Einführung

Lange war Visual Basic Script die Skriptsprache für IT-Administratoren und Entwickler.
Seit PowerShell auf dem Markt ist, werden immer mehr PowerShell Skripte eingesetzt um IT-Prozesse zu vereinfachen und zu automatisieren.

Windows PowerShell

Windows PowerShell ist seit Windows 7 verfügbar und kann nur auf Windows Client und Serversystemen verwendet werden. Windows PowerShell ist standardmäßig auf Windows Systemen vorinstalliert.

PowerShell Core 6.0

PowerShell Core 6.0 ist seit 2018 öffentlich verfügbar und kann betriebssystemunabhängig eingesetzt werden. Somit ist PowerShell nun auch auf Linux, MacOS und natürlich Windows verfügbar.

PowerShell 7

PowerShell 7 ist seit 04 März 2020 öffentlich verfügbar und kann betriebssystemunabhängig eingesetzt werden. PowerShell 7 bringt weitere neue Funktionen mit und einen Kompatibilitätsmodus für ältere PowerShell Befehlen.

PowerShell .vs cmd.exe .vs Visual Basic Script

Ich möchte Ihnen nun eine Abbildung zeigen, die darstellt wie relevant PowerShell gegenüber Visual Basic und CMD ist. Man sieht das die Nutzung und Beliebtheit von PowerShell seit 2004 stätig steigt.

Quelle: https://trends.google.de/trends/?geo=DE

[table id=13 /]

PowerShell Versionen und Erscheinungsjahr

[table id=9 /]

Was ist Windows PowerShell?

Windows PowerShell ist ein von Microsoft entwickeltes Framework, das auf dem .Net Framework basiert.

Windows PowerShell besteht im wesentlichen aus zwei Komponenten. Einmal den PowerShell Interpreter und der eigentlichen PowerShell Skriptsprache.

PowerShell Interpreter

Der PowerShell Interpreter ist eine Anwendung, die PowerShell Befehle in verständliche Maschinencodes übersetzt.

PowerShell Skriptsprache

Die Skriptsprache für PowerShell ist objektorientiert und dadurch einfach strukturiert.

Die Anwendung für Windows PowerShell heißt. “powershell.exe”. Wenn Sie diese Anwendung aufrufen, bekommen Sie eine Konsole ähnlich der “cmd” Konsole.
Die PowerShell Konsole ist aber blau dargestellt. Wenn Sie ein Windows Betriebssystem verwenden das höher ist als Windows XP, suchen Sie einfach mal nach PowerShell und rufen Sie es auf.

Nun können Sie in dieser PowerShell Konsole einen Befehl eingeben.

Nehmen wir z.B. den Befehl zum ausgeben aller Prozesse auf dem Windows System, auf dem Sie gerade die powershell.exe aufgerufen haben.

Der Befehl heißt: Get-Process

Get-Process

Mit diesem Befehl sehen Sie alle Prozesse, die auf Ihrem Windows System gerade laufen. Nun könnten Sie z.B. einige Prozesse beenden, sich mehr Informationen zu einem bestimmten Prozess anzeigen lassen, oder ein Prozess neustarten und so weiter.

Aber bevor Sie in die Tiefe einsteigen, lassen Sie uns noch einige wichtige Grundlagen kennenlernen.

Warum PowerShell?

Windows PowerShell ist ab Windows 7 standardmäßig installiert und in allen darauffolgenden Windows Versionen anwendbar. Ab Windows Server 2012 R2 nutzen die meisten graphischen Server Tools, im Hintergrund PowerShell Befehle, die für den Administrator lediglich in einer graphischen Form dargestellt werden.

Von den bekanntesten technology Herstellern in der ganzen Welt werden PowerShell Module bereitgestellt. Mit diesen PowerShell Modulen können Sie PowerShell verwenden, um auf die Hardware des Herstellers zuzugreifen und diese zu administrieren.

Microsoft hat für alle deren Produkte solche PowerShell Module gebaut. So können Sie über PowerShell alle Windows Versionen ab Windows Server 2008 mit PowerShell verwalten. Des Weiteren können Sie gleichzeitig alle Windows Applikationen wie Active Directory, DNS, Exchange, Hyper-V, Fileserver usw. mit PowerShell administrieren.

Mit dem richtigen PowerShell Wissen können Sie Ihre Aufgaben effizienter und einfacher erledigen.

Mit der Einführung von PowerShell Core 6.0 am 12.01.2018 ist PowerShell betriebsunabhängig geworden. Mit PowerShell Core 6.0 können die Befehle und Skripte, die in Windows geschrieben wurden, auch auf einem Linux Derivat ausgeführt werden. Andersherum natürlich auch.

In diesem PowerShell Tutorial lernen Sie, wie Sie PowerShell am besten nutzen. Mit einfachen Beispielen aus der Praxis zeige ich Ihnen PowerShell so, wie Sie es auch in Ihrem Alltag anwenden können.

Meine Name ist Aleksej Kusnir und ich wünsche Ihnen viel Erfolg und Spaß beim PowerShell lernen in diesem kostenlosen PowerShell Tutorial.

Windows PowerShell .vs PowerShell 6.0 Core .vs PowerShell 7

Windows PowerShell

Windows PowerShell

Windows PowerShell Logo, Quelle: https://de.wikipedia.org/wiki/PowerShell

PowerShell 6.0 Core oder nur PowerShell

PowerShell 6.0 Core oder nur PowerShell

PowerShell Core 6.0 Logo, Quelle: https://github.com/PowerShell/PowerShell

PowerShell 7

PowerShell 7

PowerShell 7 Logo, Quelle: https://github.com/PowerShell/PowerShell

Seit Anfang des Jahres, so ab dem 12.01.2018, ging es in den Medien mit der Nachricht los, dass PowerShell 6.0 Core öffentlich verfügbar ist. PowerShell 6.0 Core soll Windows PowerShell erweitern, das bereits seit Jahren in der Windows Welt und darüber hinaus bekannt geworden ist.

PowerShell Core 6.0 ist kein Nachfolger von Windows PowerShell indem Sinne. Es ist eine Abbildung dessen. Der wesentliche Unterschied zwischen PowerShell Core 6.0 und Windows PowerShell ist, dass PowerShell Core 6.0 nicht auf dem .Net Framework basiert, sonder auf dem .Net Core Framework. Dadurch kann es ohne weiteres auch auf anderen Betriebssystemen außer Windows eingesetzt werden, wie z.B. Linux oder MacOS.

Mit PowerShell 7 hat Microsoft einen weiteren Meilenstein aufgemacht.

PowerShell 7 bring uns weitere Möglichkeiten im Skripting und der Nutzung von PowerShell. Des Weiteren hat PowerShell 7 einen Kompatibilitätsmodus für Windows PowerShell Befehle.

.Net Framework ist ein Framework der Firma Microsoft, das nur auf Windows Betriebssystemen verfügbar ist.

.Net Core ist ein opensource Framework, das betriebssystemunabhäng verfügbar ist.

Somit bleibt Windows PowerShell weiterhin das meist genutzte Skripting Werkzeug in der Windows Welt. Deswegen auch der Name “Windows PowerShell”. Ich schätze mal mit PowerShell 7 wird sich das in den nächten Jahren ändern. So dass Windows Administratoren PowerShell 7 als Standard nutzen.

Ich gehe in dieser PowerShell Einführung auf die Grundlagen ein. So dass Sie diese sowohl in Windows PowerShell als auch in PowerShell 6.0 Core und PowerShell 7 nutzen können.

PowerShell 7

Seit März 2020 ist PowerShell 7 nach 2 Jahren Entwicklung verfügbar. 

PowerShell 7 ist Nachfolger von Windows PowerShell und PowerShell Core.

Warum Microsoft PowerShell 7 herausgebracht hat, werde ich Ihnen in diesem Blogpost erläutern.

Zusätzlich zeige Ich Ihnen was die Vorteile von PowerShell 7 sind und wie Sie es herunterladen und installieren.

Mehr Infos erhalten Sie unter:

https://www.linetwork.de/powershell-7/

Windows PowerShell aufrufen?

Windows Powershell wird wie in der Einleitung beschrieben mit “powershell.exe” aufgerufen.
Windows Powershell ist von Windows und muss nicht extra nachinstalliert werden.

PowerShell 7 aufrufen

PowerShell 7 ist noch nicht Bestandteil des Windows Betriebssystems. Ich schätze mal mit der nächsten Windows Version ist auch PowerShell 7 standardmäßig dabei.
Microsoft hat aber für alle die PowerShell 7 nutzen möchten, die Installationsdateien veröffentlicht. So dass Sie Powershell 7 nachinstallieren können.

Anbei ein paar Links wo Sie PowerShell 7 herunterladen können und die entsprechende Anleitungen dazu, wie Sie PowerShell 7 unter Windows installieren. Wenn Sie PowerShell 7 unter Windows installieren möchten, dann laden Sie sich die .msi herunter. Mit einer MSI installieren Sie PowerShell super einfach.

Sobald Sie Powershell 7 installiert haben können Sie die Anwendung mit “pwsh.exe” aufrufen.
Dazu können Sie pwsh.exe zum Beispiel in der “cmd.exe” “powershell.exe” aufrufen oder in der Windows Suche “PowerShell 7” eingeben.

Hier finden Sie den Link zum offizielen Statement von Microsoft zu PowerShell 7

CMD.EXE | POWERSHELL.EXE | PWSH.EXE

Anbei eine kleine Darstellung, wie sich die Skriptverarbeitung und Befehlsverarbeitung über die Jahre entwickelt hat. Angefangen von der cmd Konsole, die bereits 1981 in IBM Computern Verwendung hatte und 2018 in dem wir PowerShell plattformübergreifend verwenden können.

So, das war bis jetzt eine kleine Geschichte in der Welt von PowerShell. Nun möchte Ich mit Ihnen in die grundlegende Einführung von PowerShell einsteigen.
Ich würde Ihnen gerne zuerst zeigen für welche Plattform PowerShell genutzt wird und dann schauen wir uns die PowerShell Methoden an, um dieses System zu steuern bzw. zu administrieren. Es ist am Anfang sehr wichtig zu verstehen, wie und wo PowerShell genutzt werden kann, bzw. bereits genutzt wird. Die beschriebenen Systeme sind Beispiele aus der Praxis.

Sie wollen mehr solche Artikel von uns sehen?

Hinterlassen Sie Ihre E-Mail Adresse, damit wir Sie über neue Artikel und News informieren können.

Mit der Nutzung dieses Formulars erklären Sie sich mit der Speicherung und Verarbeitung Ihrer Daten durch diese Website einverstanden.

Wie und wo wird PowerShell genutzt?

Nehmen wir mal an Sie arbeiten viel mit Windows Systemen, dann können Sie mit PowerShell unter anderem folgende Systeme administrieren. Es gibt noch viel mehr, aber ich möchte Ihnen erst einmal zeigen wo PowerShell z.B. in der Praxis verwendet wird.

Windows Systeme

  • Windows Server 2008
  • Windows Server 2008 R2
  • Windows Server 2012
  • Windows Server 2012 R2
  • Windows Server 2016
  • Windows Server 2019

Windows Server Applikationen

  • Activce Directory
  • DNS
  • DHCP
  • Exchange Server
  • Fileserver
  • Hyper-V
  • Failover Clustering
  • Storage Spaces Direct
  • Storage Replica
  • Printserver
  • IIS Web Services

Windows Grundkonfiguration

  • Netzwerkadapter
  • Netzwerk Teaming
  • Disks
  • Firewall
  • Proxy
  • Registry
  • Dateien und Ordner

Drittanbieter Storage Hardware Administration

  • Disks
  • SMB
  • Raid Controller
  • SAN
  • iSCSI
  • Storage Controller

Hyper-V Administration

  • VMs
  • Hyper-V Hosts
  • VMs Disks
  • virtuelles Netzwerk
  • virtuelle Disks

Azure Administration

  • VMs in Azure
  • Azure Site Recovery
  • Azure Ressource Manager
  • Azure Services

Bevor Sie aber die einzelnen Systeme mit PowerShell administrieren können, gehen wir zuerst auf die PowerShell Grundlagen ein, die Ich Ihnen nun zeigen möchte.

PowerShell Befehle

PowerShell Module und CMDLETS

PowerShell selbst ist eine Plattform die einen Interpreter bereitstellt.  Die eigentliche PowerShell Power kommt durch die Module, die von den Herstellern und von der Community entwickelt werden. Microsoft entwickelt z.B. PowerShell Module für Active Directory, Windows Server und so weiter.  Für deren Produkte halt. Ein anderes Unternehmen entwickelt PowerShell Module für Ihre Applikationen oder Hardware.

Ein einzelnes Modul besteht meist aus mehreren Funktionen, diese werden in PowerShell cmdlets genannt.

Hier ein Beispiel:

Wenn Sie Active Directory mit PowerShell administrieren möchten, dann müssen Sie das Modul “ActiveDirectory” in PowerShell laden. Wenn Sie sich auf einem Domänencontroller anmelden und dort PowerShell aufrufen, ist das PowerShell Modul bereits vorinstalliert.

Remoteserver-Verwaltungstools - RSAT

Wenn Sie Active Directory über Ihren Windows Client mit PowerShell administrieren wollen, dann installieren Sie dazu das RSAT Packet.

Nachdem Sie RSAT auf Ihren Client installiert haben, Öffnen Sie die PowerShell Konsole und geben Sie Get-Module ein.

Get-Module

Importieren Sie das Active Directory Modul mit Import-Module activedirectory

Import-Module

Wenn Sie jetzt den Befehl „Get-Module“ ausführen, sehen Sie nun das importierte Active Directory Modul.

Get-Module

Sobald das “ActiveDirectory” Modul installiert ist oder wenn Sie auf einem Domänencontroller angemeldet sind können Sie die “CMDLETS” nutzen wie z.B.

New-ADUSer
Get-ADUSer

Die CMDLETS sind quasi Funktionen die etwas tun können. Wie neue Benutzer erstellen mit “New-ADuser” oder Benutzer anzeigen mit “Get-ADUser”.

Die häufigsten PowerShell Befehlsarten - Get, Set, Enable, Remove, Disable, Add, New

Wie Sie bereits gemerkt haben verfolgen die PowerShell Befehle immer im gleichen Syntax. Je nach dem was der Befehl für eine Funktion hat, beginnt dieser mit einem bestimmten Wort. z.B. “Get-“. Get heißt in Englisch bekommen. Sprich mit diesem Befehl möchten Sie etwas angezeigt bekommen.

Anbei eine Darstellung der grundlegenden Befehlsarten, die Sie unter anderem in PowerShell vorfinden. Die Korrektheit hängt natürlich vom dem Modul bzw. CMDLET ab, welches Sie nutzen und wer dieses programmiert hat.

Get

Sich ein Wert anzeigen lassen.

Get-Process
Get-NetAdapter
Get-Host

Set

Einen Wert hinzufügen also etwas anpassen.

Set-ACL
Set-DnsClient
Set-NetAdapter

New

Eine neue Freigabe erstellen oder eine neue Datei erstellen.

New-NetAdapterAdvancedProperty
New-FileShare
New-Item

Remove & Stop

Eine Datei löschen oder ein Windows Prozess beenden.

Remove-Item
Stop-Process

Welche Aufgabe wollen Sie mit PowerShell erledigen, prüfen Sie zuerst die Anforderungen.

Bevor Sie einen Befehl mit PowerShell nutzen können oder bevor Sie ein PowerShell Skript schreiben, sollten Sie sich im Klaren sein wofür Sie das machen, also was das Ziel ist und ob es sich lohnt ein PowerShell Skript zu schreiben.

Verstehen Sie das nicht falsch, ich bin ein großer Fan von PowerShell und es erleichtert extrem das Leben im IT Alltag. Doch bevor Sie eine Aufgabe mit PowerShell erledigen möchten, sollten Sie sich ein paar Fragen stellen um herauszufinden ob Sie nur ein Befehl nehmen, ein Skript schreiben oder die Aufgabe lieber auf einen anderen Weg erledigen.

Ich beschreibe den Prozess etwas genauer, im Alltag würden Sie mit etwas Erfahrung in wenigen Sekunden oder Minuten die Entscheidung bereits im Kopf haben. Wichtig ist einfach nur, dass Sie einige Gedanken bereits im Hinterkopf haben.

Damit Sie schnell entscheiden können, ob Sie eine Aufgabe mit PowerShell erledigen oder einen anderen Weg nutzen, sollten Sie sich folgende Fragen stellen:

  1. Gibt es eine PowerShell Schnittstelle mit der die Aufgabe erledigt werden kann?
  2. Kommt die Aufgabe öfters vor oder ist das eine einmalige Angelegenheit?
  3. Wenn es eine einmalige Angelegenheit ist? Geht es vlt. einfacher und schneller über die GUI?

Wenn Sie feststellen, dass es sich hier um eine Aufgabe handelt, die Sie immer wieder erledigen müssen, dann ist dies ein wunderbarer Kandidat für PowerShell.

Ist es ein einmaliger Befehl? oder benötigen Sie ein Skript?

Wenn Sie eine Aufgabe jeden Tag wiederkehrend durchführen müssen, dann lohnt es sich ein Skript zu schreiben. In dem Skript würde dann der Befehl stehen, den Sie sonst jeden Tag ausführen müssten, wie z.B. eine Datei löschen.

Remove-Item -Path “pfad zur Datei”

Das ist zwar ein einfaches Beispiel aber Sie verstehen ja worauf Ich hinaus möchte. Automatisieren Sie mit PowerShell wiederkehrende Aufgaben die Sie von Ihrer wesentlichen Arbeit abhalten.

PowerShell & Pipes

Bei Pipes handelt es sich in PowerShell um eine Methode um etwas weiterzuleiten. Pipes heißt auf Deutsch “Rohr” und ist das Synonym bei PowerShell, um etwas zu transportieren, was dann auf der anderen Seite verarbeitet wird und dann vlt. wieder transportiert wird.

Ein Beispiel:

Sie möchten den OneDrive Prozess auf Ihrem Server bzw. Client beenden. 

Mit „Get-Process“ erhalten Sie alle Windows Prozesse und können überprüfen wie der OneDrive Prozess in Windows heißt.

Wir lassen uns erstmal nur den Prozessnamen und die Id anzeigen, in dem wir die Ausgabe weiter “Pipen”. Das Pipen wird durch das Zeichen “|” in PowerShell dargestellt.

Get-Process | Format-Table ProcessName, Id

Nachdem wir wissen, wie der OneDrive Windowsprozess heißt, können wir diesen beenden. 

Das geht mit dem Befehl „Stop-Process“.

Stop-Process -Name onedrive

Wir könnten aber auch den Prozess „onedrive“ suchen und dann an den Befehl „Stop-Process“ Pipen.

Get-Process -Name onedrive | Stop-Process

Wenn wir jetzt den Windowsprozess „onedrive“ suchen, ist dieser nicht mehr vorhanden, weil wir Ihn beendet haben.

Sie können den Prozess mit PowerShell auch wieder starten in dem Sie den Befehl „Start-Process“ verwenden.

Start-Process onedrive

Wenn wir den „onedrive“ Prozess erneut suchen, dann sehen wir, dass dieser wieder erreichbar ist.

PowerShell Filter

In PowerShell gibt es natürlich auch Filterfunktionen.  

Dabei gibt es Filter die bereits durch den Befehl bereitgestellt werden. Wenn aber solch eine Filterfunktion nicht ausreicht oder gar nicht vorhanden ist, dann können Sie auf die PowerShell Filter Funktionen zugreifen.

Die Filter Funktion in PowerShell heißt “where” oder auch einfach “?”. Die Filterfunktion wird mithilfe der Pipe Funktion verwenden. Gehen wir direkt auf die Beispiele ein, damit es klarer wird.

Anbei eine Filterfunktion die durch den Befehl „Get-Process“ bereitgestellt wird. Sie können den Namen des Windowsprozesses eingeben, dann wird auch nur dieser Prozess angezeigt.

Get-Process -Name onedrive

Sie können das Gleiche aber auch mit dem Befehl “where” in PowerShell erreichen. Geben Sie den Befehl “where” hinter “Pipe” ein.

Get-Process | where {$_.ProcessName -eq “onedrive”}

Nehmen wir aber mal an, Sie wissen zwar welchen Windowsprozess Sie möchten, aber den Namen nicht komplett kennen? Dann können Sie z.B. mit den Zeichen “*” arbeiten und den Parameter -like. 

Damit werden alle Prozesse ausgegeben die mit den Namen “one” beginne. z.B. „onedrive“ aber auch „onenow“.

Get-Process | where {$_.ProcessName -like “one*”}

Anstatt dem Befehl „where“ können Sie auch einfach “?” eingeben. “?” ist das synonym für “where” und wird in PowerShell auch so interpretiert. Das verkürz den Befehl und ist übersichtlicher.

Get-Process | ? ProcessName -eq “one*”

PowerShell Ausgabe in Variablen speichern

Bei Variablen in PowerShell handelt es um Container, die Werte aufnehmen können. Nehmen wir die Variante, dass Sie der Variable einen Wert manuell zuweisen möchten.

Angenommen Sie möchten mit dem Windows Prozessen in PowerShell arbeiten. Dann würden Sie ja nicht immer wieder den Befehl „Get-Process“ verwenden. 

Sie können die Ausgabe von „Get-Process“ auch in einer Variable speichern.

Beispiel:

$oneddriveprocess=Get-Process -Name onedrive

Wenn Sie nun den Variablenamen in PowerShell eintippen, dann bekommen Sie die gespeicherte Ausgabe zurück. In diesem Beispiel haben wir die Ausgabe von dem „onedrive“ Prozess in der Variable $onedriveprocess gespeichert. 

$oneddriveprocess

Sie können nun den Prozess auch beenden, in dem Sie die Variable an den Befehl „Stop-Process“ pipen.

$oneddriveprocess | Stop-Process

Wenn Sie nun den Variablen Namen wieder in PowerShell eingeben, dann sehen Sie, dass der Prozess OneDrive beendet wurde, da keine Werte ausgegeben werden. Das bedeutet, dass die Variablen direkt auf die Objekte verweisen. Ist das nicht super?

$oneddriveprocess
scripte

PowerShell Scripte

Für die Erstellung eines PowerShell Skripts benötigen Sie keine Extra Software oder ähnliches. 

Öffnen dazu einfach ein Editor zum Beispiel “notepad.exe”. Speichern Sie nun diese Datei mit der Endung dateiname.ps1.

Wenn Sie nun diese Datei anklicken, wird die Datei als ein PowerShell Skript ausgeführt.

Nun könnten wir das PowerShell Skript mit Leben füllen und eine Aufgabe zukünftig einfacher und effizienter erledigen.

Bevor wir aber in die Erstellung von Skripten und dessen Techniken einsteigen, möchte ich mit ihnen erstmal die Grundalgen von PowerShell und dessen Befehlen durchgehen. Des Weiteren gehen wir in den weiteren Kapiteln auf die Programmiergrundlagen ein, die Sie in Skripten verwenden um dynamische und intelligente PowerShell Skripte zu erstellen.

Zusätzliche Infos und ein Überblick über die wichtigsten PowerShell Befehle finde Sie im diesem Blogpost.

scripte

Programmieren mit PowerShell

In diesem Kapitel geht es um Programmiergrundlagen. 

Programmieren oder skripten müssen Sie, wenn Sie ein dynamisches bzw. ein PowerShell Skript schreiben das eine gewisse Intelligenz hat.

Ich möchte Ihnen hier nicht alle Programmiertechniken zeigen die es gibt, schließlich möchten Sie ja keine Programmierausbildung mit diesem Tutorial absolvieren.

Ich zeige Ihnen die Programmiertechniken die ich selber in der Praxis anwende und die mir bis jetzt meist ausgereicht haben. Ich möchte Ihnen einfach nur die wichtigsten Programmierkenntnisse vermitteln mit denn Sie selbständig eigene PowerShell Skripte schreiben können.

Variablen

Variablen sind in PowerShell Objekte die einen bestimmten Wert speichern und dieser dann weiterverarbeitet werden kann.

Vergleichsoperatoren

Vergleichsoperatoren werden verwendet um zu bestimmen ob ein bestimmter Wert einem anderen Wert entspricht oder nicht.

If-Abfragen

If-Abfragen werden für die logische Steuerung in Skripten verwendet.

Schleifen

Mit Schleifen wird in Skripten die Häufigkeit einer bestimmten Aufgabe gesteuert.

Variablen Beispiel

$variable= “Wert”

Eine Array Varable erstellen.

$array= “Wert1″,”Wert2”

Eine leere Array Variable erstellen.

$array = @()

Eine ArrayListe erstellen. Dies ist eine Vererbung aus dem .Net Framework.

$Array = New-Object System.Collections.ArrayList

Vergleichsoperatoren

Vergleichsoperatoren werden eingesetzt, wenn ein Wert mit einem anderen Wert verglichen werden soll.

Nehmen wir mal an Sie haben eine Variable in dieser steht ein Wert X und eine Variable die ein Wert Y beinhaltet. 

Jetzt möchten Sie diese beiden Werte mit einander Vergleichen um zu schauen ob Wert X größer ist als Wert Y.

Wenn der Wert X größer ist als der Wert Y dann soll der Wert Y um 1 addiert werden.

Das Skript würde dazu in PowerShell folgendermaßen aussehen:

$X= 5
$Y= 2
if($X -gt $y)
{
           $X+=1
}

Es gibt verschiedene Vergleichsoperatoren die Sie nutzen können.

[table id=1 /]

If-Abfragen

Mit einer if-Abfrage steuern Sie das Skript. Mit einer if-Abfrage prüfen Sie immer wieder einen bestimmten Wert und entscheiden dann was weiter passiert.

Wie im vorherigen Bespiel dargestellt, wenn X größer ist als Y, dann soll der Wert X um 1 addiert werden. 

Sie können aber auch entscheiden das Skript zu beenden oder etwas anderes zu tun, wie z.B. einen bestimmten Befehl auszuführen.

Ein Beispiel: Nehmen wir an Sie möchten überprüfen ob der Benutzer den Prozess “onedrive” beenden möchte. Wir simulieren das mal. Die Variable X ist die Eingabe des Benutzers. 

Dann würde das Skript folgendermaßen aussehen.

$X= “onedrive”
if($X -eq “onedrive”)
{
    Stop-Process -Name onedrive
}

Zusätzlich zu der if-Abfrage wird auch “else” verwendet. Deswegen nenne ich diese Abfrage immer if-else Abfrage.

Mit “if” überprüfen Sie einen bestimmten Wert und entscheiden dann was zu tun ist. Was ist aber wenn dieser Wert nicht übereinstimmt, dann möchte man ebenfalls was tun oder?

Nehmen wir unser Beispiel von oben. Sie möchten überprüfen ob der Benutzer den Prozess “onedrive” beenden möchte. Der Benutzer gibt aber einen anderen Namen ein. Dann möchten Sie den Benutzer drauf aufmerksam machen, dass der Prozess dem bestimmten Namen nicht enthalten ist.

Das Skript dazu würde dann folgendermaßen aussehen:

$X= “onedrive”
if($X -eq “onedrive”)
{
    Stop-Process -Name onedrive
}
else
{
    Write-Host “Der Prozessname $X existiert nicht. Meinen Sie den Prozess onedrive?”
}

Das “else” sagt einfach, wenn die if-Abfrage nicht übereinstimmt dann mach folgendes.

Nun kennen Sie if und else abfragen. Gehen wir eine Stufe höher und nehmen wir mal an, dass Sie in der if-Abfrage mehrere Werte überprüfen möchten.

Sie möchten z.B. erlauben das der Benutzer auch einfach das Wort “one” eingeben kann um den Prozess “onedrive” zu beenden.

Dies können Sie tun, in dem Sie logische Operatoren in der if-Abfrage verwenden.

Anbei das Beispiel mit dem logischen Operator “-or”. Or steht für oder und heißt, wenn der eine oder andere Wert korrekt ist, dann mach folgendes.

$X= “one”
if($X -eq “onedrive” -or $X -eq “one”)
{
    Stop-Process -Name onedrive
}

Es gibt 4 verschieden logische Operatoren in if-Abfragen die Sie je nach Situation anwenden können.

[table id=2 /]

Schleifen

Schleifen werden dazu verwendet ein bestimmtes Ereignis immer wieder zu wiederholen bis ein Wert erreicht ist.

Die folgenden Schleifen werden oft in der Praxis verwendet und reichen meist für alle Aufgaben aus.

For

While

Foreach

Die For Schleife

Die For Schleife eignet sich sehr gut für Aufgaben, wenn bekannt mit welchen Wert begonnen wie der Endwert ist.

Beispiel: Sie wollen eine bestimmte Aufgabe nur 9-mal durchführen. Dann würden Sie eine For Schleifen bauen. Den Anfang Wert auf 0 setzen und den Endwert auf 9. Solange die Variable “$x” einen Wert kleiner 9 hat, wird die Schleife wiederholt.

for($x=0;$x -lt 9;$x++)
{
Write-Host “Code wird ausgeführt $x”
}

Die while Schleife

Die “while” Schleife eignet sich sehr gut, wenn Sie eine Aufgabe haben, wo Sie nicht Wissen wann der Wert erreicht ist.

Beispiel: Sie haben z.B. die Variable “$x” mit dem Wert “0”. Sie möchten die schleife solange laufen lassen bis die Variable “$x” den Wert “10” hat. Sie lassen sich für jeden durchlauf der Schleife den Wert in der Variable “$x” ausgeben mit Wirt-Host.

Vorsicht: Die while Schleife würde niemals enden, wenn wir nicht in der Schleife den Befehl “$x+=1” hinzufügen würden. Wenn wir das nicht machen würden, könnte die Variable “$x” niemals den Wert 10 erreichen und somit würde die Schleife unendlich laufen.

$x=0

while($x -le 10)
{
Write-Host $x
$x+=1
}

Die Foreach Schleife

Die “foreach” Schleife eignet sich sehr gut für Listen und Arrays. Da wo mehrere Objekte in einer Variable gespeichert sind und Sie jedes Objekt einzeln bearbeiten möchten.

Beispiel: Nehmen wir mal an, Sie haben ein “array” mit zwei Werten. Sie möchten jeden Wert einzeln bearbeiten. Dann würden Sie dafür die “foreach” Schleife verwenden.

$array=”Wert1″,”Wert2″

foreach($wert in $Array)
{

Write-Host $wert
}

powershell script

PowerShell Script erstellen

In diesem Kapitel zeige Ich Ihnen, wie Sie ein PowerShell Skript erstellen, ausführen und worauf Sie genau achten müssen. Sie sind gespannt, dann lassen Sie uns loslegen.

Bevor Sie jedoch ein PowerShell Script unter Windows starten können, muss dem System die Ausführung von Skripten erst erlaubt werden.

Set-Execution Policy

PowerShell ist ein mächtiges Werkzeug womit Sie die meisten Windows Applikationen und Systemeinstellungen steuern können.

Deswegen ist unter PowerShell auch ein Sicherheitsmechanismus eingerichtet, welches das automatischausführen von PowerShell Skripten verbietet. Sie können aber diesen Mechanismus manuell deaktivieren bzw. anpassen.

Der Befehl um die Einstellungen zu Ändern heißt. „Set-ExectionPolicy“

Die Ausführung von PowerShell Scripten erlauben

Dazu öffnen Sie die PowerShell Konsole (powershell.exe) im Administrator Modus und geben dann anschließend Set-ExecutionPolicy RemoteSigned“ ein.

Set-ExecutionPolicy RemoteSigned

Neben der „RemoteSigned“ Variante gibt es noch weitere die Sie nach Bedarf nutzen können.

Anbei ist eine Tabelle, die darstellt welche Wirkung die einzelnen Befehle haben.

[table id=12 /]

Nachdem Sie das Ausführen von PowerShell Skripten erlaubt haben, können wir nun gemeinsam ein PowerShell Skript erstellen.

Bevor Sie jedoch mit dem erstellen eines PowerShell Scripts beginnen, lassen Sie mich Ihnen erstmal erklären wie ein PowerShell Script  aufgebaut ist.

Danach zeige Ich Ihnen drei Tools die Ich persönlich nutze um PowerShell Scripte zu erstellen und anzupassen.

Skript ohne Eingabeparameter

Ein Skript ohne Eingabeparameter ist für eine statische Verarbeitung gedacht. Es können keine Daten mitgegeben werden.

Beispiel:

param(
[Parameter(Mandatory=$true)][string]$wert
)
Write-Host $wert

Skript mit Eingabeparameter

Einem Skript mit Eingabeparameter können Daten mitgegeben werden, die dann im Skript verwendet werden können.

Beispiel:

Write-Host $wert

Was ist ein PowerShell Skript?

Ein PowerShell Skript ist einfach aufgedrück eine Reihenfolge von Funktionen die automatisiert nacheinander ausgeführt werden.  

Hinter Funktionen verstecken sich Befehle die eine bestimmte Aufgabe erledigen.

Welche Dateiendung hat ein PowerShell Skript?

Die Dateiendung für PowerShell Skripte ist “ps1”.

Beispiel: Scriptname.ps1

Wie erstellen Sie ein PowerShell Skript?

Ein PowerShell Skript ist keine Programmiersprache, die erst in Maschinencode übersetzt werden muss. Somit können Sie ein PowerShell Skript praktisch auch mit einem Texteditor erstellen. Die Übersetzung übernimmt dann die PowerShell Engine.

In der Praxis werden aber Tools wie z.B. das PowerShell Integrated Scripting Environment (ISE) oder Visual Studio Code verwendet.

Mit PowerShell ISE können Sie Ihre Skripte auch sofort testen und auf die logische Funktion überprüfen.

Ich werde Ihnen nun die drei Varianten vorstellen und zeigen Wie Sie ein PowerShell Skript erstellen.

3 Top Tools um PowerShell Skripte zu erstellen

Texteditor

Richtig! Sie können Ihr PowerShell Skript mit einem Texteditor wie Notepad erstellen. Sie müssen lediglich die Datei dann mit der Dateiendung “.ps1” abspeichern.

Ich erstelle hier ein PowerShell Skript mit dem Befehl “Get-Process”.

PowerShell ISE

Die PowerShell ISE wurde von Microsoft für die Erstellung von PowerShell Skripten entwickelt.

Diese ist standartmäßig auf jedem Windows System installiert.

Der Vorteil der PowerShell ISE liegt daran, dass viele vordefinierte Windows PowerShell Befehle einfach genutzt werden können. Des Weiteren können Sie Ihr PowerShell Skript direkt in PowerShell ISE ausführen und testen.

Die PowerShell ISE unterstützt nur Windows PowerShell 5.0. Wenn Sie PowerShell Core bzw. PowerShell 6.0 verwenden möchte, dann nutzen Sie bitte das Tool “Visual Studio Code”.

PowerShell ISE aufrufen:

Den Befehl Get-Process einfügen

Das Skript nun speichern. Wie Sie sehen, ist die Dateiendung bereits auf PowerShell eingestellt.

Sobald das Skript gespeichert ist, können Sie das PowerShell Symbol im Dateiexplorer sehen.

Visual Studio Code

Visual Studio Code ist eine Entwicklungsoberfläche, die auf Visual Studio beruht. Diese wurde vereinfacht, in dem es als Framework aufgebaut wurde. Sprich, wenn neue Funktionen benötigt werden, müssen diese als Visual Studio Module heruntergeladen und installiert werden.

Visual Studio Code müssen Sie herunterladen, da dieses standardmäßig nicht installiert ist.

Nachdem Sie das Framework installiert haben, können Sie es aufrufen.

Bevor Sie mit dem schreiben der PowerShell Skripte in Visual Studio Code beginnen, sollten Sie noch das PowerShell Modul installieren.

Dabei gehen Sie auf die Suchleiste und geben dort “powershell” ein.

Klicken Sie hier auf “Installieren” und nach auf “Neu laden”

Nun können Sie mit Datei->Neue Datei anfangen einen PowerShell Skript zu schreiben. Hier wieder als Beispiel der Befehl Get-Process.

Speichern Sie nun das Skript in dem Sie den Dateityp PowerShell wählen.

So nun haben wir das selbe Skript mit 3 verschiedenen Tools erstellt.

Gehen wir zum nächsten Punkt: Wie Sie ein PowerShell Skript ausführen.

Wie führen Sie ein PowerShell Skript aus?

Sie können die eben erstellen PowerShell Skripte entweder über der rechten Maustaste “Mit PowerShell ausführen” oder über PowerShell direkt starten.

Bevor Sie aber ein Skript ausführen können müssen Sie noch eine Sicherheitseinstellung ändern.

Öffnen Sie dazu PowerShell als “Administrator”

Versuchen Sie nun das eben erstellte Skript auszuführen! Sie bekommen eine Fehlermeldung.

.\beispielscript.ps1 : Die Datei “C:\Temp\lernen\beispielscript.ps1” kann nicht geladen werden, da die Ausführung von 

Skripts auf diesem System deaktiviert ist. Weitere Informationen finden Sie unter “about_Execution_Policies” 

(https:/go.microsoft.com/fwlink/?LinkID=135170).

Damit Sie ein PowerShell Skript ausführen können, müssen Sie die Sicherheitseinstellung ändern.

PS>: Set-ExecutionPolicy –ExecutionPolicy RemoteSigned

Nun versuchen Sie erneut das PowerShell Skript auszuführen.

Skriptbeispiel

Um Ihnen die Skripterstellung einfach zu präsentieren, verwenden wir hier als Beispiel das Erstellen und Verwalten von Ordner und Dateien unter Windows.

Welche Befehle werden hier verwenden um Dateien und Ordner zu bearbeiten.

New-Item
Remove-Item

Skript ohne Eingabeparameter

Nehmen wir mal an Sie müssten in dem Pfad C:\Temp jeden Tag 10 Ordner mit einem bestimmten Namen ablegen. Dann können Sie dafür ein Skript schreiben, was dies für Sie jeden Tag tun würde.

Sie möchte unter den Ordner C:\Temp die folgenden Unterordner erstellen.

  • Ordner 1
  • Ordner 2
  • Ordner 3
  • Ordner 4
  • Ordner 5
  • Ordner 6
  • Ordner 7
  • Ordner 8
  • Ordner 9
  • Ordner 10

In dem Skript würden wir dann für jeden Unterordner einen Befehl erstellen wie z.B.

New-Item -Path “c:\temp” -Name “Ordner 1” -ItemType Directory

Skript mit Eingabeparameter

Nehmen wir mal an, dass Sie jeden Tag unterschiedliche Ordner anlegen müssen. Sie möchte aber nicht jeden Tag das Skript anpassen. Um dies zu erreichen verwenden Sie Eingabeparameter in PowerShell.

Um Input Parameter in PowerShell zu erfassen gibt es den Befehl “Param”

Mit dem folgenden Befehl erzwingen Sie, dass der Benutzer einen Wert beim Ausführen Ihres Skripts eingeben muss. Dazu schreiben Sie z.B. in Ihr PowerShell Skript am Anfang des Skripts den Befehl „param“ und die Variable in das Sie die Eingabe speichern möchten. Wie gewohnt lassen wir uns mit Write-Host den Eingabewert ausgeben.

param(

[Parameter(Mandatory=$true)][string]$wert
)

Write-Host $wert

Speichern Sie Ihr Skript z.B. unter C:\temp mit den Namen meinskript.ps1.

Öffnen Sie die PowerShell Konsole und wechseln Sie in das Verzeichnis c:\temp mit “cd c:\temp”.

Geben Sie folgendes ein: .\meinscript.ps1 -wert “Test”

Nun sollten Sie das Wort Test als Ausgabe bekommen haben. Glückwunsch, Sie haben ein tolles PowerShell Skript geschrieben.

Alle klar, nun Wissen Sie, wie Sie ein PowerShell Skript mit den verschiedenen Tools erstellen und ausführen können.

Ich wünsche Ihnen viel Spaß beim Skripten.

powershell script

Funktionen in PowerShell

Funktionen werden in PowerShell dazu verwendet um mehrere Aufgaben in logische Unteraufgaben zu strukturieren. Wenn Ihr Skript z.B.: mehrere Aufgaben durchführt, die für sie schon komplex sind, könnten Sie diese Aufgaben als Funktionen zusammenfassen.

Nehmen wir mal an, Sie möchte alle Ordner auf einem Windows System auslesen und dann diese Ordnerstruktur in einer Textdatei abspeichern. Dann könnten Sie diese Aufgaben in zwei Funktionen aufteilen.

1.   Ordnerstruktur auslesen

2.   Ordnerstruktur in eine Textdatei abspeichern.

Die Funktionen dazu würde in PowerShell folgendermaßen aussehen. 

function ordnerstukturlesen()
{

}
function ordnerstrukturspeichern()
{

}

Die Funktionen würden Sie in PowerShell ausführen, in dem Sie den Funktionsnahmen eingeben. 

Bei den beiden Beispielen würde das aufrufen in PowerShell so gehen, dass Sie einfach den Funktionsnamen schreiben.

Das komplette Skript dazu sieht das folgendermaßen aus.

function ordnerstukturlesen()
{

}
function ordnerstrukturspeichern()
{

}

ordnerstukturlesen
ordnerstrukturspeichern

P.S: Du möchtest PowerShell von deinem Schreibtisch aus lernen? In deinem eigenen Tempo mit Schritt für Schritt Anleitung in Videoformat? Schau mal hier! KLICK