Set-AuthenticodeSignature
Aggiunge una firma Authenticode a uno script di PowerShell o a un altro file.
Sintassi
ByPath (Impostazione predefinita)
Set-AuthenticodeSignature
[-Certificate] <X509Certificate2>
[-FilePath] <String[]>
[-IncludeChain <String>]
[-TimestampServer <String>]
[-HashAlgorithm <String>]
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
ByLiteralPath
Set-AuthenticodeSignature
[-Certificate] <X509Certificate2>
-LiteralPath <String[]>
[-IncludeChain <String>]
[-TimestampServer <String>]
[-HashAlgorithm <String>]
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
ByContent
Set-AuthenticodeSignature
[-Certificate] <X509Certificate2>
-SourcePathOrExtension <String[]>
-Content <Byte[]>
[-IncludeChain <String>]
[-TimestampServer <String>]
[-HashAlgorithm <String>]
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Descrizione
Il cmdlet Set-AuthenticodeSignature aggiunge una firma Authenticode a qualsiasi file che supporta Il pacchetto SIP (Subject Interface Package).
In un file di script di PowerShell la firma assume la forma di un blocco di testo che indica la fine delle istruzioni eseguite nello script. Se è presente una firma nel file durante l'esecuzione di questo cmdlet, tale firma viene rimossa.
Esempio
Esempio 1- Firmare uno script usando un certificato dall'archivio certificati locale
Questi comandi recuperano un certificato di firma del codice dal provider di certificati PowerShell e lo usano per firmare uno script di PowerShell.
$cert=Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert
$signingParameters = @{
FilePath = 'PsTestInternet2.ps1'
Certificate = $cert
HashAlgorithm = 'SHA256'
}
Set-AuthenticodeSignature @signingParameters
Il primo comando usa il cmdlet Get-ChildItem e il provider di certificati 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, limita i certificati recuperati a quelli con autorità di firma del codice. Il comando archivia il risultato nella variabile $cert.
Il secondo comando definisce la variabile $signingParameters come HashTable con i parametri per il cmdlet Set-AuthenticodeSignature per firmare lo script di PSTestInternet2.ps1. Usa il parametro FilePath per specificare il nome dello script, il parametro certificato per specificare che il certificato viene archiviato nella variabile $cert e il parametro HashAlgorithm per impostare l'algoritmo hash su SHA256.
Il terzo comando firma lo script splatting dei parametri definiti in $signingParameters.
Annotazioni
Usando il parametro CodeSigningCert con Get-ChildItem restituisce solo i certificati con autorità di firma del codice e contengono una chiave privata. Se non è presente alcuna chiave privata, i certificati non possono essere usati per la firma.
Esempio 2- Firmare uno script usando un certificato da un file PFX
Questi comandi usano il cmdlet Get-PfxCertificate per caricare un certificato di firma del codice. Usarlo quindi per firmare uno script di PowerShell.
$cert = Get-PfxCertificate -FilePath C:\Test\Mysign.pfx
$signingParameters = @{
FilePath = 'ServerProps.ps1'
Certificate = $cert
HashAlgorithm = 'SHA256'
}
Set-AuthenticodeSignature @signingParameters
Il primo comando usa il cmdlet Get-PfxCertificate per caricare il certificato C:\Test\MySign.pfx nella variabile $cert.
Il secondo comando definisce la variabile $signingParameters come HashTable con i parametri per il cmdlet Set-AuthenticodeSignature per firmare lo script di ServerProps.ps1. Usa il parametro FilePath per specificare il nome dello script, il parametro certificato per specificare che il certificato viene archiviato nella variabile $cert e il parametro HashAlgorithm per impostare l'algoritmo hash su SHA256.
Il terzo comando firma lo script splatting dei parametri definiti in $signingParameters.
Se il file di certificato è protetto da password, PowerShell richiede la password.
Esempio 3- Aggiungere una firma che include l'autorità radice
Questo comando aggiunge una firma digitale che include l'autorità radice nella catena di attendibilità ed è firmata da un server timestamp di terze parti.
$signingParameters = @{
FilePath = 'C:\scripts\Remodel.ps1'
Certificate = $cert
HashAlgorithm = 'SHA256'
IncludeChain = 'All'
TimestampServer = 'http://timestamp.fabrikam.com/scripts/timstamper.dll'
}
Set-AuthenticodeSignature @signingParameters
Il comando usa il parametro FilePath per specificare lo script firmato e il parametro certificato per specificare il certificato salvato nella variabile $cert. Usa il parametro IncludeChain per includere tutte le firme nella catena di attendibilità, inclusa l'autorità radice. Usa anche il parametro TimeStampServer per aggiungere un timestamp alla firma.
In questo modo si impedisce che lo script abbia esito negativo alla scadenza del certificato.
Il secondo comando firma lo script splatting dei parametri definiti in $signingParameters.
Parametri
-Certificate
Specifica il certificato che verrà usato per firmare lo script o il file. Immettere una variabile che archivia un oggetto che rappresenta il certificato o un'espressione che ottiene il certificato.
Per trovare un certificato, utilizzare Get-PfxCertificate oppure il cmdlet Get-ChildItem nell'unità Cert: di Certificati. Se il certificato non è valido o non ha code-signing'autorità, il comando non riesce.
Proprietà dei parametri
| Tipo: | X509Certificate2 |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
(All)
| Posizione: | 1 |
| Obbligatorio: | True |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-Confirm
Richiede conferma prima di eseguire il cmdlet.
Proprietà dei parametri
| Tipo: | SwitchParameter |
| Valore predefinito: | False |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
| Alias: | cfr |
Set di parametri
(All)
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-Content
Questo parametro viene visualizzato nell'elenco di sintassi perché è definito nella classe base da cui Set-AuthenticodeSignature deriva. Tuttavia, il supporto per questo parametro non viene implementato in Set-AuthenticodeSignature.
Proprietà dei parametri
| Tipo: | Byte[] |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
ByContent
| Posizione: | Named |
| Obbligatorio: | True |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | True |
| Valore dagli argomenti rimanenti: | False |
-FilePath
Specifica il percorso di un file firmato.
Proprietà dei parametri
| Tipo: | String[] |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
ByPath
| Posizione: | 1 |
| Obbligatorio: | True |
| Valore dalla pipeline: | True |
| Valore dalla pipeline in base al nome della proprietà: | True |
| Valore dagli argomenti rimanenti: | False |
-Force
Consente al cmdlet di aggiungere una firma a un file di sola lettura. Anche usando il parametro Force, il cmdlet non può eseguire l'override delle restrizioni di sicurezza.
Proprietà dei parametri
| Tipo: | SwitchParameter |
| Valore predefinito: | False |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
(All)
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-HashAlgorithm
Specifica l'algoritmo hash utilizzato da Windows per calcolare la firma digitale per il file.
Il valore predefinito è SHA1. I file firmati con un algoritmo hash diverso potrebbero non essere riconosciuti in altri sistemi. Gli algoritmi supportati dipendono dalla versione del sistema operativo.
Per un elenco dei valori possibili, vedere HashAlgorithmName struct.
Proprietà dei parametri
| Tipo: | String |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
(All)
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-IncludeChain
Determina quali certificati nella catena di attendibilità dei certificati sono inclusi nella firma digitale. NotRoot è l'impostazione predefinita.
I valori validi sono:
-
Signer: include solo il certificato del firmatario. -
NotRoot: include tutti i certificati nella catena di certificati, ad eccezione dell'autorità radice. -
All: include tutti i certificati nella catena di certificati.
Proprietà dei parametri
| Tipo: | String |
| Valore predefinito: | NotRoot |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
(All)
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-LiteralPath
Specifica il percorso di un file firmato. A differenza di FilePath, il valore del parametro LiteralPath viene usato esattamente come viene digitato. Nessun carattere viene interpretato come metacaratteri. Se il percorso include caratteri di escape, racchiudilo tra virgolette singole. Le virgolette singole indicano a PowerShell di non interpretare alcun carattere come sequenze di escape.
Proprietà dei parametri
| Tipo: | String[] |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
| Alias: | PSPath |
Set di parametri
ByLiteralPath
| Posizione: | Named |
| Obbligatorio: | True |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | True |
| Valore dagli argomenti rimanenti: | False |
-SourcePathOrExtension
Questo parametro viene visualizzato nell'elenco di sintassi perché è definito nella classe base da cui Set-AuthenticodeSignature deriva. Tuttavia, il supporto per questo parametro non viene implementato in Set-AuthenticodeSignature.
Proprietà dei parametri
| Tipo: | String[] |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
ByContent
| Posizione: | Named |
| Obbligatorio: | True |
| Valore dalla pipeline: | True |
| Valore dalla pipeline in base al nome della proprietà: | True |
| Valore dagli argomenti rimanenti: | False |
-TimestampServer
Usa il server timestamp specificato per aggiungere un timestamp alla firma. Digitare l'URL del server timestamp come stringa. L'URL deve iniziare con http://.
Il timestamp rappresenta l'ora esatta in cui il certificato è stato aggiunto al file. Un timestamp impedisce l'esito negativo dello script se il certificato scade perché gli utenti e i programmi possono verificare che il certificato sia valido al momento della firma.
Proprietà dei parametri
| Tipo: | String |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
(All)
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-WhatIf
Mostra gli effetti dell'esecuzione del cmdlet. Il cmdlet non viene eseguito.
Proprietà dei parametri
| Tipo: | SwitchParameter |
| Valore predefinito: | False |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
| Alias: | Wi |
Set di parametri
(All)
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
CommonParameters
Questo cmdlet supporta i parametri comuni: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Per altre informazioni, vedi about_CommonParameters.
Input
String
È possibile inviare tramite pipe una stringa contenente il percorso del file a questo cmdlet.
Output
Signature
Questo cmdlet restituisce un oggetto Signature che rappresenta il valore impostato.