PowerShell: Unterschied zwischen den Versionen

Aus FLBK-Wiki
Zur Navigation springen Zur Suche springen
Die Seite wurde geleert.
Markierung: Geleert
Keine Bearbeitungszusammenfassung
 
(11 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
'''PowerShell''' ist ein plattformübergreifendes Framework von Microsoft zur Automatisierung, Konfiguration und Verwaltung von Systemen. Es bietet einen [[Interpreter|Kommandozeileninterpreter]] inklusive [[Skriptsprache]]. Unter Windows ersetzt es die klassische Kommandzeile (cmd) und ist seit Windows 7 sowie Windows Server 2008 R2 verfügbar. PowerShell ist eine Shell (Hülle), also eine Software, mit der Benutzer mit dem Betriebssystem (Kern) interagieren.


== Funktionen ==
PowerShell bietet insbesondere '''Cmdlets''' (Commandlets). Dies sind einfache PowerShell-Befehle. Neue Cmdlets lassen sich mit Modulen nachinstallieren. Zusätzlich bietet PowerShell '''Alias''' (Kurzbefehle) und '''Funktionen''' (PowerShell-Skripte).
=== Variablen ===
Variablen werden mit <code>$</code> gekennzeichnet.
Beispiel:
<syntaxhighlight lang="powershell">
$MeinName = "Hans"
</syntaxhighlight>
Eingabe von <code>$MeinName</code> in die Konsole liefert ''Hans''. 
<code>"Mein Name ist $MeinName"</code> liefert ''Mein Name ist Hans'', 
<code>'Mein Name ist $MeinName'</code> liefert ''Mein Name ist $MeinName''.
=== Pipelineoperator ===
Befehle können über den Pipelineoperator <code>|</code> verbunden werden. 
Jeder Pipelineoperator sendet die Ergebnisse des vorherigen Befehls an den nächsten Befehl.
Beispiel:
<syntaxhighlight lang="powershell">
Get-Process notepad | Stop-Process
</syntaxhighlight>
Der erste Befehl verwendet das Cmdlet <code>Get-Process</code>, um ein Objekt des Prozesses abzurufen. Über den Pipelineoperator <code>|</code> wird dieses Objekt an <code>Stop-Process</code> übergeben, das den Prozess beendet.
=== Kontrollstrukturen ===
PowerShell bietet Schleifen, Bedingungen und logische Steuerungen wie:
* <code>if-else</code>
* <code>switch</code>
* <code>for</code>
== Entwicklungsumgebung ==
Microsoft stellt die '''Windows PowerShell ISE''' (Integrated Scripting Environment) bereit. 
Unten befindet sich die Konsole, oben ein Editor zum Schreiben und Speichern von Skripten als <code>.ps1</code>-Dateien. 
* Ausführen des kompletten Skripts: <kbd>F5</kbd> 
* Ausführen markierter Teile: <kbd>F8</kbd> 
* Verfügbare Befehle anzeigen: <code>get-command</code> 
* Konsole leeren: <code>cls</code>
== Skripte ausführen ==
Gespeicherte <code>.ps1</code>-Skripte lassen sich über Rechtsklick → "Mit PowerShell ausführen" starten. 
Alternativ:
<syntaxhighlight lang="powershell">
chdir H:
.\Skriptname.ps1
</syntaxhighlight>
== Befehle finden ==
Über die integrierte Hilfe oder:
<syntaxhighlight lang="powershell">
get-command
get-command -Name print
</syntaxhighlight>
== Hilfreiche Cmdlets ==
=== Grundlagen und Hilfesystem ===
* '''STRG + Mausrad''': Schriftgröße ändern
* <code>Get-Help</code> – Hilfe anzeigen
* <code>Update-Help</code> – Hilfedateien aktualisieren
* <code>Get-Command</code> – Alle Befehle auflisten
=== Kompatibilität mit Cmd & Linux ===
Viele klassische Befehle funktionieren durch Aliase:
* <code>dir</code> → Get-ChildItem
* <code>ls</code> → Get-ChildItem
* <code>ipconfig /all</code> → Direkt ausgeführt
* <code>mkdir</code> → New-Item
* <code>rd</code> → Remove-Item
* <code>man</code> → Get-Help
* <code>cls</code> → Clear-Host
Alias prüfen:
<syntaxhighlight lang="powershell">
Get-Alias ls
</syntaxhighlight>
=== Einfache Cmdlets ===
* Prozesse:
<syntaxhighlight lang="powershell">
Get-Process
Get-Process -Name notepad
Stop-Process -Name notepad
.\notepad.exe
</syntaxhighlight>
* Systeminformationen:
<syntaxhighlight lang="powershell">
$PSVersionTable
Get-Service
Get-HotFix
Get-WindowsDriver -Online -All
</syntaxhighlight>
* Drucker:
<syntaxhighlight lang="powershell">
Get-Printer
Get-PrintConfiguration -PrinterName "Druckername"
</syntaxhighlight>
=== Parameter ===
* Parameter mit Argument:
<syntaxhighlight lang="powershell">
-Name "wuauserv"
</syntaxhighlight>
* Switch-Parameter:
<syntaxhighlight lang="powershell">
-Online
-All
</syntaxhighlight>
=== Systemkonfiguration ===
* Dienste:
<syntaxhighlight lang="powershell">
Set-Service -Name wuauserv -StartupType Disabled
Stop-Service -Name wuauserv
</syntaxhighlight>
* Netzwerk:
<syntaxhighlight lang="powershell">
Get-NetIPInterface
Get-NetIPAddress -AddressFamily IPv4 -PrefixOrigin Dhcp
Test-NetConnection -ComputerName 'Nwfs'
Set-NetFirewallProfile -All -Enabled true
</syntaxhighlight>
* Apps verwalten:
<syntaxhighlight lang="powershell">
Get-AppxPackage -Name *help* | Remove-AppxPackage
Get-AppxPackage | Out-GridView -PassThru
</syntaxhighlight>
=== Daten Im- und Export ===
Export:
<syntaxhighlight lang="powershell">
... | Export-Csv -Path C:\data.csv -Delimiter ";" -Encoding UTF8
... | Export-Clixml -Path C:\data.xml
... | ConvertTo-Json | Out-File -FilePath C:\data.json
</syntaxhighlight>
Import:
<syntaxhighlight lang="powershell">
Import-Csv -Delimiter ";" -Path C:\data.csv
</syntaxhighlight>
=== Arbeiten mit Objekten und der Pipeline ===
<syntaxhighlight lang="powershell">
Get-PrintConfiguration -PrinterName "Drucker" | Select-Object -Property Printername, Duplexingmode
Get-PrintConfiguration -PrinterName "Drucker" | Select-Object -Property *
(Get-NetIPAddress -AddressFamily IPv4).IPAddress
</syntaxhighlight>
=== Weitere Befehle ===
* Webanfragen:
<syntaxhighlight lang="powershell">
(Invoke-WebRequest -Uri www.google.de).Links.href
</syntaxhighlight>
* Eventlog:
<syntaxhighlight lang="powershell">
Get-EventLog -LogName Application -EntryType Error -After '2020-03-30'
Get-WinEvent -FilterHashtable @{Logname="*Hyper*"; Providername="Microsoft"; ID=2008; Level=4}
</syntaxhighlight>
* Umgebungsvariablen:
<syntaxhighlight lang="powershell">
$env:COMPUTERNAME
</syntaxhighlight>
* Pfade:
<syntaxhighlight lang="powershell">
Test-Path C:\ -PathType Container
Split-Path -Path C:\Windows -Parent
Join-Path -Path C:\Windows -ChildPath Ordner
</syntaxhighlight>
* Virtuelle Festplatten:
<syntaxhighlight lang="powershell">
New-VHD -Path D:\test.vhdx -SizeBytes 50GB -Dynamic
Mount-VHD -Path D:\test.vhdx
</syntaxhighlight>
[[Kategorie:Programmierung]]
[[Kategorie:FI_I_SDM]]

Aktuelle Version vom 6. September 2025, 11:15 Uhr

PowerShell ist ein plattformübergreifendes Framework von Microsoft zur Automatisierung, Konfiguration und Verwaltung von Systemen. Es bietet einen Kommandozeileninterpreter inklusive Skriptsprache. Unter Windows ersetzt es die klassische Kommandzeile (cmd) und ist seit Windows 7 sowie Windows Server 2008 R2 verfügbar. PowerShell ist eine Shell (Hülle), also eine Software, mit der Benutzer mit dem Betriebssystem (Kern) interagieren.

Funktionen

PowerShell bietet insbesondere Cmdlets (Commandlets). Dies sind einfache PowerShell-Befehle. Neue Cmdlets lassen sich mit Modulen nachinstallieren. Zusätzlich bietet PowerShell Alias (Kurzbefehle) und Funktionen (PowerShell-Skripte).

Variablen

Variablen werden mit $ gekennzeichnet.

Beispiel:

$MeinName = "Hans"

Eingabe von $MeinName in die Konsole liefert Hans. "Mein Name ist $MeinName" liefert Mein Name ist Hans, 'Mein Name ist $MeinName' liefert Mein Name ist $MeinName.

Pipelineoperator

Befehle können über den Pipelineoperator | verbunden werden. Jeder Pipelineoperator sendet die Ergebnisse des vorherigen Befehls an den nächsten Befehl.

Beispiel:

Get-Process notepad | Stop-Process

Der erste Befehl verwendet das Cmdlet Get-Process, um ein Objekt des Prozesses abzurufen. Über den Pipelineoperator | wird dieses Objekt an Stop-Process übergeben, das den Prozess beendet.

Kontrollstrukturen

PowerShell bietet Schleifen, Bedingungen und logische Steuerungen wie:

  • if-else
  • switch
  • for

Entwicklungsumgebung

Microsoft stellt die Windows PowerShell ISE (Integrated Scripting Environment) bereit. Unten befindet sich die Konsole, oben ein Editor zum Schreiben und Speichern von Skripten als .ps1-Dateien.

  • Ausführen des kompletten Skripts: F5
  • Ausführen markierter Teile: F8
  • Verfügbare Befehle anzeigen: get-command
  • Konsole leeren: cls

Skripte ausführen

Gespeicherte .ps1-Skripte lassen sich über Rechtsklick → "Mit PowerShell ausführen" starten. Alternativ:

chdir H:
.\Skriptname.ps1

Befehle finden

Über die integrierte Hilfe oder:

get-command
get-command -Name print

Hilfreiche Cmdlets

Grundlagen und Hilfesystem

  • STRG + Mausrad: Schriftgröße ändern
  • Get-Help – Hilfe anzeigen
  • Update-Help – Hilfedateien aktualisieren
  • Get-Command – Alle Befehle auflisten

Kompatibilität mit Cmd & Linux

Viele klassische Befehle funktionieren durch Aliase:

  • dir → Get-ChildItem
  • ls → Get-ChildItem
  • ipconfig /all → Direkt ausgeführt
  • mkdir → New-Item
  • rd → Remove-Item
  • man → Get-Help
  • cls → Clear-Host

Alias prüfen:

Get-Alias ls

Einfache Cmdlets

  • Prozesse:
Get-Process
Get-Process -Name notepad
Stop-Process -Name notepad
.\notepad.exe
  • Systeminformationen:
$PSVersionTable
Get-Service
Get-HotFix
Get-WindowsDriver -Online -All
  • Drucker:
Get-Printer
Get-PrintConfiguration -PrinterName "Druckername"

Parameter

  • Parameter mit Argument:
-Name "wuauserv"
  • Switch-Parameter:
-Online
-All

Systemkonfiguration

  • Dienste:
Set-Service -Name wuauserv -StartupType Disabled
Stop-Service -Name wuauserv
  • Netzwerk:
Get-NetIPInterface
Get-NetIPAddress -AddressFamily IPv4 -PrefixOrigin Dhcp
Test-NetConnection -ComputerName 'Nwfs'
Set-NetFirewallProfile -All -Enabled true
  • Apps verwalten:
Get-AppxPackage -Name *help* | Remove-AppxPackage
Get-AppxPackage | Out-GridView -PassThru

Daten Im- und Export

Export:

... | Export-Csv -Path C:\data.csv -Delimiter ";" -Encoding UTF8
... | Export-Clixml -Path C:\data.xml
... | ConvertTo-Json | Out-File -FilePath C:\data.json

Import:

Import-Csv -Delimiter ";" -Path C:\data.csv

Arbeiten mit Objekten und der Pipeline

Get-PrintConfiguration -PrinterName "Drucker" | Select-Object -Property Printername, Duplexingmode
Get-PrintConfiguration -PrinterName "Drucker" | Select-Object -Property *
(Get-NetIPAddress -AddressFamily IPv4).IPAddress

Weitere Befehle

  • Webanfragen:
(Invoke-WebRequest -Uri www.google.de).Links.href
  • Eventlog:
Get-EventLog -LogName Application -EntryType Error -After '2020-03-30'
Get-WinEvent -FilterHashtable @{Logname="*Hyper*"; Providername="Microsoft"; ID=2008; Level=4}
  • Umgebungsvariablen:
$env:COMPUTERNAME
  • Pfade:
Test-Path C:\ -PathType Container
Split-Path -Path C:\Windows -Parent
Join-Path -Path C:\Windows -ChildPath Ordner
  • Virtuelle Festplatten:
New-VHD -Path D:\test.vhdx -SizeBytes 50GB -Dynamic
Mount-VHD -Path D:\test.vhdx