Viele Administratoren verzichten auf die digitale Signierung von eigene PowerShell-Skripten. Um solche PowerShell-Skripte in der lokalen IT-Infrastruktur ausführen zu können wird daher die PowerShell-Ausführungsrichtlinie auf Unrestricted konfiguriert. Diese Konfiguration ist ein großes Sicherheitsrisiko für das gesamte Unternehmen.
Unrestricted
Wenn das digitale Zertifikat zur Code-Signierung in Ihrem persönlichen Zertifikatsspeicher hinterlegt ist, ist die Signierung besonders einfach.
Wechseln Sie in einer PowerShell_Session in das Verzeichnis, das die zu signierende PowerShell-Datei enthält und signieren Sie die Datei mit den folgenden Befehlen. In diesem Beispiel wird die Datei MyPowerShellScript.ps1 signiert.
MyPowerShellScript.ps1
# Lesen des Signatur-Zertifikates aus dem persönlichen Zertifikatspeicher # des Anwenders, der die Signierung durchführt $cert=Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert # Lesen eines exportierten Signatur-Zertifikates aus einer PFX-Datei # Wenn der Export mit einem Kennwort geschützt ist, werden Sie nach # dem Kennwort gefragt $cert = Get-PfxCertificate -FilePath C:\SCRIPTS\CERTS\CodeSigningVarunagroup.pfx # Digitale Signierung der Datei MyPowerShellScript.ps1 Set-AuthenticodeSignature -FilePath MyPowerShellScript.ps1 -Certificate $cert
Wissenswert ist, dass das Cmdlet Get-PfxCertificate, im Gegensatz zur Dokumentation bei Microsoft Docs, keinen Parameter -Password verfügt, um das Kennwort als SecureString zu übergeben.
Get-PfxCertificate
-Password
Konfigurieren Sie nach der Signierung Ihrer PowerShell-Skripte die Ausführungsrichtlinie für Ihre Systeme mit Hilfe einer Gruppenrichtlinie.
Viel Spaß mit PowerShell!