====== Powershell ======
===== Links =====
* [[http://www.heise.de/ct/hotline/FAQ-Windows-PowerShell-2055719.html|Windows PowerShell FAQ]]
* [[https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_quoting_rules?view=powershell-7.3&viewFallbackFrom=powershell-7.1|rules for using single and double quotation marks in PowerShell]]
===== Besonderheiten =====
- In der Standardeinstellung können nur signierte cmdlets ausgeführt werden (s.u.)
- Befehle müssen PowerShell-Remoting explizit unterstützen
===== Ausführung erlauben (ExecutionPolicy) =====
In der Standardeinstellung können nur signierte cmdlets ausgeführt werden, falls man das nicht leisten kann (oder will) muss die "ExecutionPolicy" verändert werden.
Set-ExecutionPolicy erlaubt diese Einstellungen, nähere Informationen siehe help about_Execution_Policies
* Restricted (Standard): einzelne Befehle sind erlaubt, aber keine Skripte (bloß keinen tieferen Sinn suchen)
* Allsigned: Alle Skripte müssen signiert sein (trusted oder unstrusted mit Nachfrage) ausser solche die nicht aus dem Internet stammen
* RemoteSigned: Skripte aus dem Internet müssen vertrauenswürdig signiert sein, bei lokal oder Netzwerk nicht
* Unrestricted: alle Skripte können laufen, bei Internetquelle Warnung
* Bypass: keine Warnungen, alles startet
* Undefined: nicht definiert
Um die Einstellunge zu verändern muss eine Powershell gestartet werden (für diese Einstellung als Administrator):
PS C:\Windows\system32> Set-ExecutionPolicy Unrestricted
Execution Policy Change
The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose
you to the security risks described in the about_Execution_Policies help topic. Do you want to change the execution
policy?
[Y] Yes [N] No [S] Suspend [?] Help (default is "Y"): y
Die Einstellung findet sich auch in ''HKLM\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell'' mit REG_SZ-Wert "ExecutionPolicy".
:!: Überprüfen lässt sich die aktuell Einstellung mit "Get-ExecutionPolicy".
Die Execution Policy lässt sich explizit für bestimmte Skripte setzen:
powershell -ep RemoteSigned -file MyScript.ps1
===== Befehle =====
^ Funktion ^ Powershell ^ Linux ((wenn Befehl Shellspezifisch dann angegeben)) ^
| Grundkonzept | komplexe und lange Befehle ("cmdlets") die Objekte mit Eigenschaften sind | einfache Befehle die |
| Hilfe zu einem Befehl anzeigen | Get-Help COMMAND
bzw. Online: Get-Help COMMAND -online
| man COMMAND
|
| freien Speicherplatz anzeigen | gemountete Datenträger ((keine Netzwerkfreigaben)): Get-WMIObject Win32_LogicalDisk
alle Laufwerke((auch wenn ihnen kein Laufwerksbuchstabe zugewiesen wurde, allerdings keine Netzwerkfreigaben)):Get-WMIObject Win32_Volume
, Netzlaufwerke: Get-WMIObject Win32_Share
| gemountete Datenträger:df -h
|
| freier Arbeitsspeicher anzeigen (in Megabyte) | | free -m
|
| Filtern einer Befehlsausgabe (Spalten) | BEFEHL | select ATTRIBUT1, ATTRIBUT2
((Beispiel: freien Speicherplatz, links Laufwerksbuchstaben, rechts freier Speicherplatz:Get-WMIObject Win32_LogicalDisk | select name, freespace
)) | cut -f2
|
| Datei bearbeiten: In Datei name.txt Zeichenkette Apfel durch Birne ersetzen und in name2.txt schreiben | | sed 's/Apfel/Birne/g' name.txt > name2.txt
|