PowerShell: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
(13 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
'''PowerShell''' ist ein plattformübergreifendes Framework von Microsoft | '''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 == | == Funktionen == | ||
PowerShell bietet insbesondere '''Cmdlets''' (Commandlets). Dies sind einfache PowerShell-Befehle. Neue Cmdlets lassen sich mit Modulen nachinstallieren. Zusätzlich bietet PowerShell '''Alias''' | 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 === | ||
Variablen werden mit $ gekennzeichnet. | Variablen werden mit <code>$</code> gekennzeichnet. | ||
Beispiel: | Beispiel: | ||
Zeile 13: | Zeile 13: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Eingabe von <code>$MeinName</code> in die Konsole liefert ''Hans''. <code>"Mein Name ist $MeinName"</code> liefert ''Mein Name ist Hans'' | 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 === | === Pipelineoperator === | ||
Befehle können über den Pipelineoperator <code>|</code> verbunden werden. Jeder Pipelineoperator sendet die Ergebnisse des vorherigen Befehls an den nächsten Befehl. | Befehle können über den Pipelineoperator <code>|</code> verbunden werden. | ||
Jeder Pipelineoperator sendet die Ergebnisse des vorherigen Befehls an den nächsten Befehl. | |||
Beispiel: | Beispiel: | ||
Zeile 23: | Zeile 26: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Der erste Befehl verwendet das <code>Get-Process</code> | 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 === | === Kontrollstrukturen === | ||
PowerShell bietet | PowerShell bietet Schleifen, Bedingungen und logische Steuerungen wie: | ||
* <code>if-else</code> | |||
* <code>switch</code> | |||
* <code>for</code> | |||
== Entwicklungsumgebung == | == Entwicklungsumgebung == | ||
Microsoft | 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> | |||
Teile | * Verfügbare Befehle anzeigen: <code>get-command</code> | ||
* Konsole leeren: <code>cls</code> | |||
== Skripte ausführen == | == 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 == | == Befehle finden == | ||
Über die integrierte Hilfe oder: | |||
<syntaxhighlight lang="powershell"> | |||
get-command | |||
get-command -Name print | |||
</syntaxhighlight> | |||
== Hilfreiche Cmdlets == | == Hilfreiche Cmdlets == | ||
=== Grundlagen und Hilfesystem === | === Grundlagen und Hilfesystem === | ||
* '''STRG + Mausrad''': | * '''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 === | === 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 | === 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 === | === 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: | [[Kategorie:Programmierung]] | ||
[[Kategorie:FI_I_SDM]] | [[Kategorie:FI_I_SDM]] |