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