Private/Wissen/C_Advance/C12a_Ausführungsrichtlinien.ps1
<#
# PowerShell-Dateien-Ausführungsrichtlinien Schutz vor das automatische Ausführen von .ps1- und psm1-Dateien - **Hashtags** Execution_Policy - **Version** 2019.10.18 #> # ! Legt die Ausführungsrichtlinien für .ps1- uns .psm1-Dateien fest # ! Die Standardeinstellung für das Ausführen liegt bei Restricted # ! d.h. diese Dateien werden NIE ausgeführt. # ! Einstellung bleiben dauerhaft erhalten. # ! Einstellung kann auch per GPO vorgenommen werden (Richtlinienname: Skriptausführung aktivieren). # ! Einstellung kann nur mit Admin-Rechten vorgenommen werden # TODO Weiterführende und Nachschlage-Informationen Get-Help -Name 'about_Execution_Policy' -ShowWindow # ? Was ist eingestellt Get-ExecutionPolicy -List # ? Was gilt für den aktuellen Scripthost $env:PSExecutionPolicyPreference # ? Mögliche Einstellungen sind Set-ExecutionPolicy -ExecutionPolicy Restricted -Scope LocalMachine Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope CurrentUser # ! 1. Ausführbare Dateien müssen signiert; 2. Signierer-Zertifikat speichern in Root und 3. speichern in TrustedPublisher Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process # ! Wie AllSigned für Remote/Download-Datei; Lokale Dateien = Unrestricted s. auch Unblock-File Set-ExecutionPolicy -ExecutionPolicy Default Set-ExecutionPolicy -ExecutionPolicy Unrestricted Set-ExecutionPolicy -ExecutionPolicy Bypass Set-ExecutionPolicy -ExecutionPolicy Undefined # ! Set-ExecutionPolicy steuert folgende Registry-Properties: Get-ItemPropertyValue -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell -Name ExecutionPolicy Get-ItemPropertyValue -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\ScriptedDiagnostics -Name ExecutionPolicy Get-ItemPropertyValue -Path Registry::HKEY_CURRENT_USER\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell -Name ExecutionPolicy # ? Empfohlene Einstellung für Client und Server # ? d.h. alle ausführbare Dateien müssen signiert (x.509-Zertifikat) sein Set-ExecutionPolicy -ExecutionPolicy 'AllSigned' Get-Help -Name about_Signing -ShowWindow # ? Empfohlene Einstellung für Test-/Entwicklungszwecke (Remote-Scripte müssen signiert sein) Set-ExecutionPolicy -ExecutionPolicy 'RemoteSigned' -Scope 'CurrentUser' # ! Bzgl. RemoteSign werden Dateien an einem Download-Marker identifiziert! # ! s.a. Unblock-File # ? Möglichkeiten *.ps1-Datei auszuführen sind ... # ... per Rechtsklick / Mit PowerShell ausführen # ... per Command oder *.PS1-Datei in eine .EXE-Datei umwandeln (s. C11_Sicherheit.ps1 bzw. X11_Technology_Hacking.ps1) # ... per Autostart-Datei profile.ps1 # ... per Aufgabenplanung, RUN-Schlüssel, etc. # ... per GPO # ... per Aufruf in der Console: c:\temp\MachWas.ps1 & "c:\temp\Mach Was.ps1" # & = Neuer Context . "c:\temp\Mach Was.ps1" # . = Aktueller Context # ... per Datei-Verknüpfung auf: powershell.exe -File "c:\temp\MachWas.ps1" -WindowStyle Hidden powershell.exe -File "c:\temp\MachWas.ps1" -NoExit # ! ACHTUNG: Copy & Paste von .PS1-Code geht IMMER! |