PowerShell: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
| Zeile 50: | Zeile 50: | ||
Befehle können über die integrierte Hilfe in Windows PowerShell ISE oder mit Hilfe der Eingabe von <code>get-command</code> in die Kommandozeile gefunden werden. Durch Eingabe von <code>get-command -Name print</code> in die Kommandozeile werden alle Befehle aufgerufen, die im Namen "print" enthalten. <code>-Name</code> ist dabei ein Positionsparameter und <code>print</code> ist das dazugehörige Argument. | Befehle können über die integrierte Hilfe in Windows PowerShell ISE oder mit Hilfe der Eingabe von <code>get-command</code> in die Kommandozeile gefunden werden. Durch Eingabe von <code>get-command -Name print</code> in die Kommandozeile werden alle Befehle aufgerufen, die im Namen "print" enthalten. <code>-Name</code> ist dabei ein Positionsparameter und <code>print</code> ist das dazugehörige Argument. | ||
== Hilfreiche Cmdlets | == Hilfreiche Cmdlets == | ||
=== Grundlagen und Hilfesystem === | |||
* '''STRG + Mausrad''': Ändert die Schriftgröße in der Konsole. | |||
* <syntaxhighlight lang="powershell">Get-Help</syntaxhighlight>: Zeigt die Hilfeseite zu einem Cmdlet an (z.B. <syntaxhighlight lang="powershell">Get-Help Get-Process</syntaxhighlight>). | |||
* <syntaxhighlight lang="powershell">Update-Help</syntaxhighlight>: Lädt die neuesten Hilfedateien herunter. | |||
* <syntaxhighlight lang="powershell">Get-Command</syntaxhighlight>: Listet alle verfügbaren Befehle auf. | |||
** <syntaxhighlight lang="powershell">Get-Command -Name *-service*</syntaxhighlight>: Findet Cmdlets, die "-service" im Namen enthalten. | |||
=== Kompatibilität mit Cmd & Linux === | |||
Die meisten klassischen Kommandozeilen-Befehle (Cmd/Bash) funktionieren in PowerShell durch integrierte '''Aliase''' oder '''Funktionen'''. | |||
=== Kompatibilität === | |||
Die meisten Kommandozeilen-Befehle | |||
* '''Typische Aliase:''' | |||
** <syntaxhighlight lang="powershell">dir</syntaxhighlight> → Get-ChildItem | |||
** <syntaxhighlight lang="powershell">ls</syntaxhighlight> → Get-ChildItem | |||
** <syntaxhighlight lang="powershell">ipconfig /all</syntaxhighlight> → Wird direkt ausgeführt | |||
** <syntaxhighlight lang="powershell">mkdir</syntaxhighlight> → New-Item | |||
** <syntaxhighlight lang="powershell">rd</syntaxhighlight> → Remove-Item | |||
** <syntaxhighlight lang="powershell">man</syntaxhighlight> → Get-Help | |||
** <syntaxhighlight lang="powershell">cls</syntaxhighlight> → Clear-Host | |||
* '''Alias abfragen:''' <syntaxhighlight lang="powershell">Get-Alias ls</syntaxhighlight> zeigt, welches Cmdlet sich hinter <syntaxhighlight lang="powershell">ls</syntaxhighlight> verbirgt. | |||
=== Einfache Cmdlets für den Einstieg === | |||
Viele Cmdlets liefern mit der Eingabe des bloßen Befehls bereits nützliche Informationen. | |||
< | * '''Prozesse:''' | ||
** <syntaxhighlight lang="powershell">Get-Process</syntaxhighlight>: Zeigt alle laufenden Prozesse an (wie <syntaxhighlight lang="powershell">tasklist.exe</syntaxhighlight>). | |||
** <syntaxhighlight lang="powershell">Get-Process -Name notepad</syntaxhighlight>: Zeigt alle Notepad-Prozesse. | |||
** <syntaxhighlight lang="powershell">Stop-Process -Name notepad</syntaxhighlight>: Beendet alle Notepad-Prozesse. | |||
** Prozess starten: <syntaxhighlight lang="powershell">.\notepad.exe</syntaxhighlight> (relativer Pfad) | |||
< | * '''Systeminformationen:''' | ||
** <syntaxhighlight lang="powershell">$PSVersionTable</syntaxhighlight>: Zeigt die PowerShell-Version an. | |||
** <syntaxhighlight lang="powershell">Get-Service</syntaxhighlight>: Listet alle Dienste und ihren Status auf. | |||
** <syntaxhighlight lang="powershell">Get-HotFix</syntaxhighlight>: Zeigt installierte Updates. | |||
** <syntaxhighlight lang="powershell">Get-WindowsDriver -Online -All</syntaxhighlight>: Listet alle Windows-Treiber auf. | |||
* '''Drucker:''' | |||
** <syntaxhighlight lang="powershell">Get-Printer</syntaxhighlight>: Zeigt konfigurierte Drucker an. | |||
** <syntaxhighlight lang="powershell">Get-PrintConfiguration -PrinterName "Druckername"</syntaxhighlight>: Zeigt Konfiguration eines bestimmten Druckers. | |||
=== Arbeiten mit Parametern === | |||
Parameter werden mit <syntaxhighlight lang="powershell">-Parametername</syntaxhighlight> übergeben. Es gibt zwei Typen: | |||
* '''Parameter mit Argument:''' <syntaxhighlight lang="powershell">-Name "wuauserv"</syntaxhighlight> | |||
* '''Switch-Parameter (ein/aus):''' <syntaxhighlight lang="powershell">-Online</syntaxhighlight>, <syntaxhighlight lang="powershell">-All</syntaxhighlight> | |||
=== Beispiele: Systemkonfiguration === | |||
* '''Dienste konfigurieren:''' | |||
** <syntaxhighlight lang="powershell">Set-Service -Name wuauserv -StartupType Disabled</syntaxhighlight> | |||
** <syntaxhighlight lang="powershell">Stop-Service -Name wuauserv</syntaxhighlight> | |||
* '''Netzwerk:''' | |||
** <syntaxhighlight lang="powershell">Get-NetIPInterface</syntaxhighlight>: Listet Netzwerkschnittstellen auf. | |||
** <syntaxhighlight lang="powershell">Get-NetIPAddress -AddressFamily IPv4 -PrefixOrigin Dhcp</syntaxhighlight>: Zeigt IPv4-Adressen, die von DHCP bezogen wurden. | |||
** <syntaxhighlight lang="powershell">Test-NetConnection -ComputerName 'Nwfs'</syntaxhighlight>: Ähnlich wie <syntaxhighlight lang="powershell">ping</syntaxhighlight>, aber leistungsstärker. | |||
** <syntaxhighlight lang="powershell">Set-NetFirewallProfile -All -Enabled true</syntaxhighlight>: Aktiviert die Firewall für alle Profile. | |||
* '''Apps verwalten (Windows 10/11):''' | |||
** <syntaxhighlight lang="powershell">Get-AppxPackage -Name *help* | Remove-AppxPackage</syntaxhighlight>: Entfernt Apps mit "help" im Namen für den aktuellen Benutzer. | |||
** <syntaxhighlight lang="powershell">Get-AppxPackage | Out-GridView -PassThru</syntaxhighlight>: Zeigt Apps in einer grafischen Tabelle zur Auswahl. | |||
=== Daten Im- und Export === | |||
PowerShell kann Daten in verschiedenen Formaten exportieren und importieren. | |||
* '''Export:''' | |||
** <syntaxhighlight lang="powershell">... | Export-Csv -Path C:\data.csv -Delimiter ";" -Encoding UTF8</syntaxhighlight> | |||
** <syntaxhighlight lang="powershell">... | Export-Clixml -Path C:\data.xml</syntaxhighlight> (PowerShell-spezifisches Format) | |||
** <syntaxhighlight lang="powershell">... | 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 (|) === | |||
Die Stärke von PowerShell ist die Weitergabe von Objekten (nicht nur Text) zwischen Cmdlets. | |||
* '''Pipeline-Beispiele:''' | |||
** <syntaxhighlight lang="powershell">Get-PrintConfiguration -PrinterName "Drucker" | Select-Object -Property Printername, Duplexingmode</syntaxhighlight> | |||
** <syntaxhighlight lang="powershell">Get-PrintConfiguration -PrinterName "Drucker" | Select-Object -Property *</syntaxhighlight> (zeigt alle Eigenschaften) | |||
* '''Objekteigenschaften auslesen:''' | |||
** <syntaxhighlight lang="powershell">(Get-NetIPAddress -AddressFamily IPv4).IPAddress</syntaxhighlight> | |||
=== Weitere nützliche Befehle === | |||
* '''Webanfragen:''' | |||
** <syntaxhighlight lang="powershell">(Invoke-WebRequest -Uri www.google.de).Links.href</syntaxhighlight> Extrahiert alle Links von einer Webseite. | |||
* '''Eventlog:''' | |||
** <syntaxhighlight lang="powershell">Get-EventLog -LogName Application -EntryType Error -After '2020-03-30'</syntaxhighlight> | |||
** <syntaxhighlight lang="powershell">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</syntaxhighlight> (Prüft, ob ein Pfad existiert) | |||
** <syntaxhighlight lang="powershell">Split-Path -Path C:\Windows -Parent</syntaxhighlight> / <syntaxhighlight lang="powershell">-Leaf</syntaxhighlight> | |||
** <syntaxhighlight lang="powershell">Join-Path -Path C:\Windows -ChildPath Ordner</syntaxhighlight> | |||
* '''Virtuelle Festplatten:''' | |||
** <syntaxhighlight lang="powershell">New-VHD -Path D:\test.vhdx -SizeBytes 50GB -Dynamic</syntaxhighlight> | |||
** <syntaxhighlight lang="powershell">Mount-VHD -Path D:\test.vhdx</syntaxhighlight> | |||
== Datenimport und -export == | == Datenimport und -export == | ||