Set-AuthenticodeSignature
Fügt einem Windows PowerShell-Skript oder einer anderen Datei eine Authenticode-Signatur hinzu.
Syntax
Set-AuthenticodeSignature [-FilePath] <string[]> [-Certificate] <X509Certificate2> [-Force] [-HashAlgorithm <string>] [-IncludeChain <string>] [-TimestampServer <string>] [-Confirm] [-WhatIf] [<CommonParameters>]
Beschreibung
Mit 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
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
Fordert Sie vor der Ausführung des Befehls zur Bestätigung auf.
Erforderlich? |
false |
Position? |
named |
Standardwert |
|
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
-WhatIf
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 die folgenden allgemeinen Parameter: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer und -OutVariable. Weitere Informationen finden Sie unter about_Commonparameters.
Eingaben und Ausgaben
Der Eingabetyp ist der Typ der Objekte, die über die Pipeline an das Cmdlet übergeben werden können. Der Rückgabetyp ist der Typ der Objekte, die das Cmdlet zurückgibt.
Eingaben |
System.String Sie können eine Zeichenfolge mit einem Dateipfad über die Pipeline an Set-AuthenticodeSignature übergeben. |
Ausgaben |
System.Management.Automation.Signature |
Beispiel 1
C:\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 2
C:\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 3
C:\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.
Siehe auch
Konzepte
about_Signing
about_Execution_Policies
Get-AuthenticodeSignature
Get-PfxCertificate
Get-ExecutionPolicy
Set-ExecutionPolicy