PowerShell: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
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 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> | * <code>Get-Help</code> – Hilfe anzeigen | ||
* <code>Update-Help</code> | * <code>Update-Help</code> – Hilfedateien aktualisieren | ||
* <code>Get-Command</code> | * <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:Skriptsprache]] | [[Kategorie:Skriptsprache]] | ||
[[Kategorie:FI_I_SDM]] | [[Kategorie:FI_I_SDM]] |