Aggiunge una firma Authenticode a uno script o un altro file di Windows PowerShell.

Sintassi

Set-AuthenticodeSignature [-FilePath] <string[]> [-Certificate] <X509Certificate2> [-Force] [-HashAlgorithm <string>] [-IncludeChain <string>] [-TimestampServer <string>] [-Confirm] [-WhatIf] [<CommonParameters>]

Descrizione

Il cmdlet Set-AuthenticodeSignature aggiunge una firma Authenticode a qualsiasi file che supporti SIP (Subject Interface Package).

In un file script di Windows PowerShell la firma corrisponde a un blocco di testo che indica la fine delle istruzioni eseguite nello script. Se quando viene eseguito questo cmdlet nel file è presente una firma, tale firma viene rimossa.

Parametri

-Certificate <X509Certificate2>

Specifica il certificato che verrà utilizzato per firmare lo script o il file. Immettere una variabile in cui è archiviato un oggetto che rappresenta il certificato o un'espressione che consente di ottenere il certificato.

Per trovare un certificato, utilizzare Get-PfxCertificate o il cmdlet Get-ChildItem nell'unità del certificato (Cert:). Se il certificato non è valido o non dispone di autorità di firma del codice, il comando ha esito negativo.

Obbligatorio?

true

Posizione?

2

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-FilePath <string[]>

Specifica il percorso di un file che deve essere firmato.

Obbligatorio?

true

Posizione?

1

Valore predefinito

Accettare input da pipeline?

true (ByValue, ByPropertyName)

Accettare caratteri jolly?

false

-Force

Consente al cmdlet di aggiungere una firma a un file di sola lettura. Quando si utilizza il parametro Force, il cmdlet non può ignorare le limitazioni di sicurezza.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-HashAlgorithm <string>

Specifica l'algoritmo di hash che Windows utilizza per calcolare la firma digitale per il file. L'impostazione predefinita è SHA1, ovvero l'algoritmo di hash predefinito di Windows.

File firmati con un algoritmo di hash diverso potrebbero non essere riconosciuti in altri sistemi.

Obbligatorio?

false

Posizione?

named

Valore predefinito

SHA1

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-IncludeChain <string>

Determina quali certificati della catena di attendibilità dei certificati sono inclusi nella firma digitale. Il valore predefinito è "NotRoot".

I valori validi sono:

-- Signer: include solo il certificato del firmatario.

-- NotRoot: include tutti i certificati della catena, ad eccezione dell'autorità radice.

--All: include tutti i certificati della catena di certificati.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-TimestampServer <string>

Utilizza il server di timestamp specificato per aggiungere un timestamp alla firma. Digitare l'URL del server di timestamp sotto forma di stringa.

Il timestamp rappresenta l'ora esatta in cui il certificato è stato aggiunto al file. Un timestamp impedisce l'esito negativo dello script in caso di scadenza del certificato, poiché utenti e programmi sono in grado di verificare che il certificato fosse valido al momento della firma.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-Confirm

Chiede una conferma prima di eseguire il comando.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-WhatIf

Descrive ciò che accadrebbe se si eseguisse il comando senza eseguirlo realmente.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

<CommonParameters>

Questo cmdlet supporta i parametri comuni -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer e -OutVariable. Per ulteriori informazioni, vedere about_Commonparameters.

Input e output

Il tipo di input è il tipo degli oggetti che è possibile reindirizzare al cmdlet. Il tipo restituito è il tipo degli oggetti restituiti dal cmdlet.

Input

System.String

È possibile reindirizzare una stringa che contiene il percorso a Set-AuthenticodeSignature.

Output

System.Management.Automation.Signature

Esempio 1

C:\PS>$cert=Get-ChildItem -Path cert:\CurrentUser\my -CodeSigningCert

C:\PS>Set-AuthenticodeSignature -FilePath PsTestInternet2.ps1 -certificate $cert

Descrizione
-----------
Tramite questi comandi viene recuperato un certificato per la firma del codice dal provider di certificati di Windows PowerShell e tale certificato viene utilizzato per firmare uno script di Windows PowerShell.

Nel primo comando vengono utilizzati il cmdlet Get-ChildItem e il provider di certificati di Windows PowerShell per ottenere i certificati nella sottodirectory Cert:\CurrentUser\My dell'archivio certificati. L'unità Cert: è l'unità esposta dal provider di certificati. Il parametro CodeSigningCert, supportato solo dal provider di certificati, consente di limitare i certificati recuperati esclusivamente a quelli con autorità di firma del codice. Tramite il comando il risultato viene archiviato nella variabile $cert.

Con il secondo comando viene utilizzato il cmdlet Set-AuthenticodeSignature per firmare lo script PSTestInternet2.ps1. Vengono utilizzati il parametro FilePath per specificare il nome dello script e il parametro Certificate per specificare che il certificato è archiviato nella variabile $cert.






Esempio 2

C:\PS>$cert = Get-PfxCertificate C:\Test\Mysign.pfx 

C:\PS>Set-AuthenticodeSignature -Filepath ServerProps.ps1 -Cert $cert

Descrizione
-----------
Questi comandi utilizzano il cmdlet Get-PfxCertificate per trovare un certificato di firma del codice. Lo utilizzano per firmare uno script di Windows PowerShell. 

Con il primo comando viene utilizzato il cmdlet Get-PfxCertificate per trovare il certificato C:\Test\MySign.pfx, che viene quindi archiviato nella variabile $cert.

Con il secondo comando viene utilizzato Set-AuthenticodeSignature per firmare lo script. Il parametro FilePath di Set-AuthenticodeSignature specifica il percorso del file di script che deve essere firmato e il parametro Cert passa la variabile $cert contenente il certificato a Set-AuthenticodeSignature.

Se il file del certificato è protetto da password, in Windows PowerShell viene richiesto di immettere la password.






Esempio 3

C:\PS>Set-AuthenticodeSignature -filepath c:\scripts\Remodel.ps1 -certificate $cert -IncludeChain All -TimeStampServer "http://timestamp.fabrikam.com/scripts/timstamper.dll"

Descrizione
-----------
Con questo comando viene aggiunta una firma digitale che include l'autorità radice nella catena di attendibilità ed è firmata da un server di timestamp di terze parti. 

Vengono utilizzati il parametro FilePath per specificare lo script da firmare e il parametro Certificate per specificare il certificato salvato nella variabile $cert. Viene utilizzato il parametro IncludeChain per includere tutte le firme nella catena di attendibilità (compresa l'autorità radice). Viene inoltre utilizzato il parametro TimeStampServer per aggiungere un timestamp alla firma. In questo modo è possibile impedire l'esito negativo dello script al momento della scadenza del certificato.






Vedere anche




Argomenti della Guida