Fügt einem Windows PowerShell-Skript oder einer anderen Datei eine Authenticode-Signatur hinzu. (Set-AuthenticodeSignature)
NAMESet-AuthenticodeSignatureÜBERSICHTFügt einem Windows PowerShell-Skript oder einer anderen Datei eine Authenticode-Signatur hinzu.SYNTAXSet-AuthenticodeSignature [-FilePath] <string[]> [-Certificate] <X509Certificate2> [-Force] [-HashAlgorithm <string>] [-IncludeChain <string>] [-TimestampServer <string>] [-Confirm] [-WhatIf] [<CommonParameters>]BESCHREIBUNGMit dem Cmdlet "Set-AuthenticodeSignature" wird jeder Datei eine Authenticode-Signatur hinzugefügt, die SIP (Subject Interface Package) unterstützt. In einer Windows PowerShell-Skriptdatei besteht die Signatur aus einem Textblock, der das Ende der Anweisungen angibt, die in diesem Skript ausgeführt werden. Wenn bei Ausführung dieses Cmdlets in der Datei bereits eine Signatur vorhanden ist, wird diese entfernt.PARAMETER-Certificate <X509Certificate2> Gibt das Zertifikat an, das zum Signieren des Skripts oder der Datei verwendet wird. Geben Sie eine Variable ein, in der ein Objekt gespeichert wird, das das Zertifikat darstellt, oder einen Ausdruck zum Abrufen des Zertifikats. Suchen Sie Zertifikate mit Get-PfxCertificate oder mit dem Cmdlet "Get-ChildItem" auf dem Zertifikatlaufwerk ("Cert:"). Wenn das Zertifikat ungültig ist oder keine Codesignaturberechtigung aufweist, verursacht der Befehl einen Fehler. Erforderlich? true Position? 2 Standardwert Pipelineeingaben akzeptieren?false Platzhalterzeichen akzeptieren?false -FilePath <string[]> Gibt den Pfad zu einer Datei an, die signiert wird. Erforderlich? true Position? 1 Standardwert Pipelineeingaben akzeptieren?true (ByValue, ByPropertyName) Platzhalterzeichen akzeptieren?false -Force [<SwitchParameter>] Ermöglicht es dem Cmdlet, eine Signatur an eine schreibgeschützte Datei anzufügen. Auch bei Verwendung des Force-Parameters kann das Cmdlet keine Sicherheitseinschränkungen außer Kraft setzen. Erforderlich? false Position? named Standardwert Pipelineeingaben akzeptieren?false Platzhalterzeichen akzeptieren?false -HashAlgorithm <string> Gibt den Hashalgorithmus an, mit dem Windows die digitale Signatur für die Datei berechnet. Der Standard ist SHA1 und entspricht dem Standardhashalgorithmus von Windows. Dateien, die mit einem anderen Hashalgorithmus signiert sind, werden auf anderen Systemen möglicherweise nicht erkannt. Erforderlich? false Position? named Standardwert SHA1 Pipelineeingaben akzeptieren?false Platzhalterzeichen akzeptieren?false -IncludeChain <string> Bestimmt, welche Zertifikate in der Zertifikatsvertrauenskette in der digitalen Signatur enthalten sind. Der Standardwert ist "NotRoot". Gültige Werte: - Signer: Enthält nur das Zertifikat des Signaturgebers. - NotRoot: Enthält alle Zertifikate in der Zertifikatskette mit Ausnahme der Stammzertifizierungsstelle. - All: Enthält alle Zertifikate in der Zertifikatskette. Erforderlich? false Position? named Standardwert Pipelineeingaben akzeptieren?false Platzhalterzeichen akzeptieren?false -TimestampServer <string> Fügt der Signatur mit dem angegebenen TimeStamp-Server einen Zeitstempel hinzu. Geben Sie die URL des TimeStamp-Servers als Zeichenfolge ein. Der Zeitstempel stellt den genauen Zeitpunkt dar, zu dem der Datei das Zertifikat hinzugefügt wurde. Ein Zeitstempel verhindert Skriptfehler bei Ablauf des Zertifikats, da Benutzer und Programme sicherstellen können, dass das Zertifikat zum Zeitpunkt des Signierens gültig war. Erforderlich? false Position? named Standardwert Pipelineeingaben akzeptieren?false Platzhalterzeichen akzeptieren?false -Confirm [<SwitchParameter>] Fordert Sie vor der Ausführung des Befehls zur Bestätigung auf. Erforderlich? false Position? named Standardwert Pipelineeingaben akzeptieren?false Platzhalterzeichen akzeptieren?false -WhatIf [<SwitchParameter>] Beschreibt die Auswirkungen einer Ausführung des Befehls, ohne den Befehl tatsächlich auszuführen. Erforderlich? false Position? named Standardwert Pipelineeingaben akzeptieren?false Platzhalterzeichen akzeptieren?false <CommonParameters> Dieses Cmdlet unterstützt folgende allgemeine Parameter: "Verbose", "Debug", "ErrorAction", "ErrorVariable", "WarningAction", "WarningVariable", "OutBuffer" und "OutVariable". Weitere Informationen erhalten Sie mit dem Befehl "get-help about_commonparameters".EINGABENSystem.String Sie können eine Zeichenfolge mit einem Dateipfad über die Pipeline an Set-AuthenticodeSignature übergeben.AUSGABENSystem.Management.Automation.SignatureHINWEISEBeispiele
BEISPIEL 1C:\PS>$cert=Get-ChildItem -Path cert:\CurrentUser\my -CodeSigningCert C:\PS>Set-AuthenticodeSignature -FilePath PsTestInternet2.ps1 -certificate $cert Beschreibung ----------- Mit diesen Befehlen wird ein Codesignaturzertifikat vom Windows PowerShell-Zertifikatanbieter abgerufen und zum Signieren eines Windows PowerShell-Skripts verwendet. Im ersten Befehl werden die Zertifikate im Unterverzeichnis "cert:\CurrentUser\my" des Zertifikatspeichers mit dem Cmdlet "Get-ChildItem" und dem Windows PowerShell-Zertifikatanbieter abgerufen. (Das Laufwerk "Cert:" wird vom Zertifikatanbieter verfügbar gemacht.) Der CodeSigningCert-Parameter, der nur vom Zertifikatanbieter unterstützt wird, beschränkt die abgerufenen Zertifikate auf solche mit Codesignaturberechtigung. Das Ergebnis wird in der Variablen "$cert" gespeichert. Mit dem zweiten Befehl wird das Cmdlet "Set-AuthenticodeSignature" verwendet, um das Skript "PSTestInternet2.ps1" zu signieren. Mit dem FilePath-Parameter wird der Name des Skripts angegeben. Mit dem Certificate-Parameter wird angegeben, dass das Zertifikat in der Variablen "$cert" gespeichert wird.BEISPIEL 2C:\PS>$cert = Get-PfxCertificate C:\Test\Mysign.pfx C:\PS>Set-AuthenticodeSignature -Filepath ServerProps.ps1 -Cert $cert Beschreibung ----------- Mit diesen Befehlen wird das Cmdlet "Get-PfxCertificate" verwendet, um ein Codesignaturzertifikat zu suchen. Anschließend verwenden sie das Zertifikat zum Signieren eines Windows PowerShell-Skripts. Im ersten Befehl wird das Zertifikat "C:\Test\MySign.pfx" mit dem Cmdlet "Get-PfxCertificate" gesucht und in der Variablen "$cert" gespeichert. Im zweiten Befehl wird das Skript mit Set-AuthenticodeSignature signiert. Mit dem FilePath-Parameter von Set-AuthenticodeSignature wird der Pfad zur Skriptdatei angegeben, die signiert wird. Die Variable "$cert" mit dem Zertifikat wird mit dem Cert-Parameter an Set-AuthenticodeSignature übergeben. Wenn die Zertifikatsdatei kennwortgeschützt ist, werden Sie von Windows PowerShell zur Eingabe eines Kennworts aufgefordert.BEISPIEL 3C:\PS>Set-AuthenticodeSignature -filepath c:\scripts\Remodel.ps1 -certificate $cert -IncludeChain All -TimeStampServer "http://timestamp.fabrikam.com/scripts/timstamper.dll" Beschreibung ----------- Mit diesem Befehl wird eine digitale Signatur hinzugefügt, die die Stammzertifizierungsstelle in der Vertrauenskette enthält und vom TimeStamp-Server eines Drittanbieters signiert wurde. Bei dem Befehl wird mit dem FilePath-Parameter der Name des Skripts angegeben, das signiert wird. Mit dem Certificate-Parameter wird angegeben, dass das Zertifikat in der Variablen "$cert" gespeichert wird. Mit dem IncludeChain-Parameter werden alle Signaturen (einschließlich der Stammzertifizierungsstelle) in die Vertrauenskette eingeschlossen. Außerdem wird der Signatur mit dem TimeStampServer-Parameter ein Zeitstempel hinzugefügt. Dadurch werden Skriptfehler beim Ablauf des Zertifikats verhindert. VERWANDTE LINKS Online version: http://go.microsoft.com/fwlink/?LinkID=113391 (möglicherweise auf Englisch) about_Signing about_Execution_Policies Get-AuthenticodeSignature Get-PfxCertificate Get-ExecutionPolicy Set-ExecutionPolicy C:\Windows>powershell get-help ConvertFrom-SecureString -full
Microsoft Windows [Version 10.0.19045.3693]
Copyright (c) 2023 Microsoft Corporation.
ColorConsole [Version 3.7.1000] PowerShell 2.0-Export