powershell
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| powershell [2023-12-27 23:45:48] – manfred | powershell [2025-08-23 22:44:56] (aktuell) – [PowerShell] david | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== PowerShell ====== | ||
| + | |||
| + | siehe Wikieintrag zu [[windows_terminal|Windows Terminal]] | ||
| + | |||
| + | GitHub: [[https:// | ||
| + | |||
| + | Installation: | ||
| + | > winget install --id Microsoft.PowerShell | ||
| + | |||
| + | Es gibt zwei verschiedene PowerShell Versionen: | ||
| + | * **Windows PowerShell** (bis v5): in Windows 10 integrierter Kommandozeileninterpreter sowie eine Skriptsprache, | ||
| + | * **PowerShell** (ab v7), auch als PowerShell Core (v6) bekannt: open-source Kommandozeileninterpreter und Skriptsprache, | ||
| + | |||
| + | Beide Versionen sind sehr ähnlich, doch nur die neue cross-platform PowerShell wird noch weiterentwickelt und bietet somit mehr Funktionen. Diese wird leider nicht mit Windows 10 mitgeliefert, | ||
| + | |||
| + | |||
| + | ===== Nice to know ===== | ||
| + | |||
| + | Symlink für das Profil (profile.ps1) der neuen PowerShell zur alten Windows PowerShell erstellen: | ||
| + | > New-Item -ItemType Directory " | ||
| + | > New-Item -ItemType File " | ||
| + | > New-Item -ItemType SymbolicLink -Path " | ||
| + | |||
| + | PowerShell Skripte auf dem System erlauben (als Admin ausführen): | ||
| + | > @(" | ||
| + | |||
| + | '' | ||
| + | |||
| + | |||
| + | ==== Beenden der Shell mit Ctrl+D (wie in Bash) ==== | ||
| + | |||
| + | Das PowerShell Profil '' | ||
| + | |||
| + | > mkdir $HOME/ | ||
| + | |||
| + | Dies wird durch das Modul '' | ||
| + | |||
| + | |||
| + | ==== IPv6 auf EUI-64 (MAC basierend) stellen (legacy) ==== | ||
| + | |||
| + | * Dies ist normalerweise nicht empfohlen, kann jedoch im Zusammenspiel mit Systemen, die modernes IPv6 nicht richtig verstehen (z.B. fritz.box Router kann IPv6 Portfreigaben nur mit EUI-64 Clients), äußerst praktisch sein. | ||
| + | * Man sollte dann jedoch unbedingt Temporary Addresses bzw. Privacy Extensions aktivieren! | ||
| + | |||
| + | In PowerShell (Admin): | ||
| + | |||
| + | > Set-NetIPv6Protocol -RandomizeIdentifiers Disabled | ||
| + | > Set-NetIPv6Protocol -UseTemporaryAddresses Enabled | ||
| + | |||
| + | |||
| + | ==== IPv6 auf zufällig (stable-privacy) stellen (modern) ==== | ||
| + | |||
| + | * Die obige Konfiguration rückgängig machen. | ||
| + | * Temporary Addresses bzw. Privacy Extensions sind standardmäßig aktiviert und sind hier nur der Vollständigkeit halber angegeben! | ||
| + | |||
| + | In PowerShell (Admin): | ||
| + | |||
| + | > Set-NetIPv6Protocol -RandomizeIdentifiers Enabled | ||
| + | > Set-NetIPv6Protocol -UseTemporaryAddresses Enabled | ||
| + | |||
| + | |||
| + | ==== RAM ==== | ||
| + | |||
| + | In Windows 10 anzeigen, wieviel RAM drin steckt //(englisch & deutsch)// | ||
| + | |||
| + | __in CMD:__ | ||
| + | C: | ||
| + | Gesamter physischer Speicher: | ||
| + | Verfügbarer physischer Speicher: | ||
| + | |||
| + | __in PowerShell: | ||
| + | PS C: | ||
| + | | ||
| + | Gesamter physischer Speicher: | ||
| + | Verfügbarer physischer Speicher: | ||
| + | |||
| + | |||
| + | ===== Skript signieren ===== | ||
| + | |||
| + | Im folgenden wird **PowerShell als Administrator** benötigt! | ||
| + | |||
| + | |||
| + | ==== Zertifikat erstellen ==== | ||
| + | |||
| + | > $date = Get-Date -DisplayHint DateTime -Year 2100 -Month 1 -Day 1 -Hour 0 -Minute 0 -Second 0 -Millisecond 0 | ||
| + | > $cert = New-SelfSignedCertificate -NotAfter $date -Type CodeSigningCert -CertStoreLocation Cert:/ | ||
| + | > echo $cert | ||
| + | |||
| + | |||
| + | ==== Zertifikat (Thumbprint) finden, was für CodeSignierung geeignet ist ==== | ||
| + | |||
| + | Microsoft Management Console (mmc) öffnen (Suche/ | ||
| + | |||
| + | |||
| + | === oder in PowerShell === | ||
| + | |||
| + | Zertifikate des lokalen Computers durchsuchen und nach Subject oder Thumbprint filtern | ||
| + | |||
| + | > ls -r Cert:/ | ||
| + | > ls -r Cert:/ | ||
| + | > ls -r Cert:/ | ||
| + | > ls -r Cert:/ | ||
| + | |||
| + | * '' | ||
| + | * ''/ | ||
| + | * wichtige Unterordner von ''/ | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | |||
| + | ==== Zertifikat löschen ==== | ||
| + | |||
| + | > ls -r Cert: | where {$_.Thumbprint -eq " | ||
| + | |||
| + | |||
| + | ==== Zertifikat vertrauen ==== | ||
| + | |||
| + | > $file = " | ||
| + | > $cert = $(ls -r Cert:/ | ||
| + | > Export-Certificate -Type CERT -Cert $cert -FilePath $file | ||
| + | > ls $file | ||
| + | > Import-Certificate -CertStoreLocation Cert:/ | ||
| + | > rm $file | ||
| + | |||
| + | |||
| + | ==== PS Skript signieren ==== | ||
| + | |||
| + | > $script = " | ||
| + | > $cert = $(ls -r Cert:/ | ||
| + | > Set-AuthenticodeSignature -Certificate $cert -FilePath $script | ||
| + | |||
