Set-AuthenticodeSignature
Lägger till en Authenticode-signatur i ett PowerShell-skript eller en annan fil.
Syntax
Set-AuthenticodeSignature
[-Certificate] <X509Certificate2>
[-IncludeChain <String>]
[-TimestampServer <String>]
[-HashAlgorithm <String>]
[-Force]
[-FilePath] <String[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Set-AuthenticodeSignature
[-Certificate] <X509Certificate2>
[-IncludeChain <String>]
[-TimestampServer <String>]
[-HashAlgorithm <String>]
[-Force]
-LiteralPath <String[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Set-AuthenticodeSignature
[-Certificate] <X509Certificate2>
[-IncludeChain <String>]
[-TimestampServer <String>]
[-HashAlgorithm <String>]
[-Force]
-SourcePathOrExtension <String[]>
-Content <Byte[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
Den här cmdleten är endast tillgänglig på Windows-plattformen.
Cmdleten Set-AuthenticodeSignature
lägger till en Authenticode-signatur till alla filer som stöder ämnesgränssnittspaket (SIP).
I en PowerShell-skriptfil får signaturen formen av ett textblock som anger slutet på instruktionerna som körs i skriptet. Om det finns en signatur i filen när den här cmdleten körs tas signaturen bort.
Exempel
Exempel 1 – Signera ett skript med ett certifikat från det lokala certifikatarkivet
Dessa kommandon hämtar ett kodsigneringscertifikat från PowerShell-certifikatprovidern och använder det för att signera ett PowerShell-skript.
$cert=Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert
Set-AuthenticodeSignature -FilePath PsTestInternet2.ps1 -Certificate $cert
Det första kommandot använder cmdleten Get-ChildItem
och PowerShell-certifikatprovidern för att hämta certifikaten i underkatalogen Cert:\CurrentUser\My
för certifikatarkivet. Enheten Cert:
är den enhet som exponeras av certifikatprovidern. Parametern CodeSigningCert , som endast stöds av certifikatprovidern, begränsar de certifikat som hämtas till dem med kodsigneringsutfärdare. Kommandot lagrar resultatet i variabeln $cert
.
Det andra kommandot använder cmdleten Set-AuthenticodeSignature
för att signera skriptet PSTestInternet2.ps1
. Den använder FilePath-parametern för att ange namnet på skriptet och certifikatparametern för att ange att certifikatet lagras i variabeln $cert
.
Anteckning
Med parametern CodeSigningCert med Get-ChildItem
returneras endast certifikat som har kodsigneringsutfärdare och som innehåller en privat nyckel. Om det inte finns någon privat nyckel kan certifikaten inte användas för signering.
Exempel 2 – Signera ett skript med ett certifikat från en PFX-fil
Dessa kommandon använder cmdleten Get-PfxCertificate
för att läsa in ett kodsigneringscertifikat. Använd det sedan för att signera ett PowerShell-skript.
$cert = Get-PfxCertificate -FilePath C:\Test\Mysign.pfx
Set-AuthenticodeSignature -FilePath ServerProps.ps1 -Certificate $cert
Det första kommandot använder cmdleten Get-PfxCertificate
för att läsa in C:\Test\MySign.pfx-certifikatet i variabeln $cert
.
Det andra kommandot använder Set-AuthenticodeSignature
för att signera skriptet. FilePath-parameternSet-AuthenticodeSignature
för anger sökvägen till skriptfilen som signeras och parametern Cert skickar $cert
variabeln som innehåller certifikatet till Set-AuthenticodeSignature
.
Om certifikatfilen är lösenordsskyddad uppmanar PowerShell dig att ange lösenordet.
Exempel 3 – Lägg till en signatur som innehåller rotutfärdare
Det här kommandot lägger till en digital signatur som innehåller rotutfärdare i förtroendekedjan, och den signeras av en tidsstämpelserver från tredje part.
Set-AuthenticodeSignature -FilePath c:\scripts\Remodel.ps1 -Certificate $cert -IncludeChain All -TimestampServer "http://timestamp.fabrikam.com/scripts/timstamper.dll"
Kommandot använder FilePath-parametern för att ange skriptet som signeras och certifikatparametern för att ange certifikatet som sparas i variabeln $cert
. Den använder parametern IncludeChain för att inkludera alla signaturer i förtroendekedjan, inklusive rotutfärdare. Den använder också parametern TimeStampServer för att lägga till en tidsstämpel i signaturen.
Detta förhindrar att skriptet misslyckas när certifikatet upphör att gälla.
Parametrar
-Certificate
Anger det certifikat som ska användas för att signera skriptet eller filen. Ange en variabel som lagrar ett objekt som representerar certifikatet eller ett uttryck som hämtar certifikatet.
Om du vill hitta ett certifikat använder Get-PfxCertificate
eller använder du cmdleten Get-ChildItem
på certifikatenheten Cert:
. Om certifikatet inte är giltigt eller inte har code-signing
behörighet misslyckas kommandot.
Type: | X509Certificate2 |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Confirm
Uppmanar dig att bekräfta innan du kör cmdleten.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Content
Den här parametern visas i syntaxlistan eftersom den definieras i basklassen som Set-AuthenticodeSignature
härleds från. Stöd för den här parametern implementeras dock inte i Set-AuthenticodeSignature
.
Type: | Byte[] |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-FilePath
Anger sökvägen till en fil som signeras.
Type: | String[] |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Force
Tillåter att cmdleten lägger till en signatur i en skrivskyddad fil. Även om du använder force-parametern kan cmdleten inte åsidosätta säkerhetsbegränsningar.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-HashAlgorithm
Anger den hash-algoritm som Windows använder för att beräkna den digitala signaturen för filen.
För PowerShell 3.0 är standardvärdet SHA256, vilket är Windows standard-hashalgoritm. För PowerShell 2.0 är standardvärdet SHA1. Filer som är signerade med en annan hash-algoritm kanske inte känns igen på andra system. Vilka algoritmer som stöds beror på operativsystemets version.
En lista över möjliga värden finns i HashAlgorithmName Struct.
Type: | String |
Position: | Named |
Default value: | SHA256 |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-IncludeChain
Avgör vilka certifikat i certifikatförtroendekedjan som ingår i den digitala signaturen. NotRoot är standard.
Giltiga värden är:
- Undertecknare: Innehåller endast undertecknarens certifikat.
- NotRoot: Innehåller alla certifikat i certifikatkedjan, förutom rotutfärdare.
- Alla: Innehåller alla certifikat i certifikatkedjan.
Type: | String |
Position: | Named |
Default value: | NotRoot |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-LiteralPath
Anger sökvägen till en fil som signeras. Till skillnad från FilePath används värdet för parametern LiteralPath exakt som det skrivs. Inga tecken tolkas som jokertecken. Om sökvägen innehåller escape-tecken omger du den inom enkla citattecken. Enkla citattecken säger till PowerShell att inte tolka några tecken som escape-sekvenser.
Type: | String[] |
Aliases: | PSPath |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-SourcePathOrExtension
Den här parametern visas i syntaxlistan eftersom den definieras i basklassen som Set-AuthenticodeSignature
härleds från. Stöd för den här parametern implementeras dock inte i Set-AuthenticodeSignature
.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-TimestampServer
Använder den angivna tidsstämpelservern för att lägga till en tidsstämpel i signaturen. Ange URL:en för tidsstämpelservern som en sträng.
Tidsstämpeln representerar exakt den tid då certifikatet lades till i filen. En tidsstämpel förhindrar att skriptet misslyckas om certifikatet upphör att gälla eftersom användare och program kan kontrollera att certifikatet var giltigt vid tidpunkten för signeringen.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
Visar vad som skulle hända om cmdleten kördes. Cmdleten körs inte.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Indata
Du kan skicka en sträng som innehåller filsökvägen till Set-AuthenticodeSignature
.
Utdata
Kommentarer
Den här cmdleten är endast tillgänglig på Windows-plattformar.