PowerShell: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 189: | Zeile 189: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
[[Kategorie: | [[Kategorie:Programmierung]] | ||
[[Kategorie:FI_I_SDM]] | [[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 anzeigenUpdate-Help
– Hilfedateien aktualisierenGet-Command
– Alle Befehle auflisten
Kompatibilität mit Cmd & Linux
Viele klassische Befehle funktionieren durch Aliase:
dir
→ Get-ChildItemls
→ Get-ChildItemipconfig /all
→ Direkt ausgeführtmkdir
→ New-Itemrd
→ Remove-Itemman
→ Get-Helpcls
→ 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