Freigeben über


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