Adiciona uma assinatura Authenticode a um script do Windows PowerShell ou outro arquivo.
Sintaxe
Set-AuthenticodeSignature [-FilePath] <string[]> [-Certificate] <X509Certificate2> [-Force] [-HashAlgorithm <string>] [-IncludeChain <string>] [-TimestampServer <string>] [-Confirm] [-WhatIf] [<CommonParameters>]
Descrição
O cmdlet Set-AuthenticodeSignature adiciona uma assinatura Authenticode a qualquer arquivo que ofereça suporte a SIP (Pacote de Interface de Assunto).
Em um arquivo de script do Windows PowerShell, a assinatura tem a forma de um bloco de texto que indica o fim das instruções que são executadas no script. Se já houver uma assinatura no arquivo quando esse cmdlet for executado, ela será removida.
Parâmetros
-Certificate <X509Certificate2>
Especifica o certificado que será usado para assinar o script ou o arquivo. Insira uma variável que armazene um objeto que representa o certificado ou uma expressão que obtenha o certificado.
Para criar um certificado, use o cmdlet Get-PfxCertificate ou Get-ChildItem na unidade do Certificado (Cert:). Se o certificado não for válido ou não tiver autoridade de assinatura de código, o comando falhará.
Necessário? |
true |
Posição? |
2 |
Valor padrão |
|
Aceitar entrada do pipeline? |
false |
Aceitar caracteres curinga? |
false |
-FilePath <string[]>
Especifica o caminho até o arquivo que será assinado.
Necessário? |
true |
Posição? |
1 |
Valor padrão |
|
Aceitar entrada do pipeline? |
true (ByValue, ByPropertyName) |
Aceitar caracteres curinga? |
false |
-Force
Permite que o cmdlet acrescente uma assinatura a um arquivo somente leitura. Mesmo usando o parâmetro Force, o cmdlet não pode substituir as restrições de segurança.
Necessário? |
false |
Posição? |
named |
Valor padrão |
|
Aceitar entrada do pipeline? |
false |
Aceitar caracteres curinga? |
false |
-HashAlgorithm <string>
Especifica o algoritmo de hash que o Windows usa para computar a assinatura digital para o arquivo. O padrão é SHA1 que é o algoritmo de hash padrão do Windows.
Os arquivos que são assinados com um algoritmo de hash diferente podem não ser reconhecidos em outros sistemas.
Necessário? |
false |
Posição? |
named |
Valor padrão |
SHA1 |
Aceitar entrada do pipeline? |
false |
Aceitar caracteres curinga? |
false |
-IncludeChain <string>
Determina quais certificados na cadeia de confiança de certificados estão incluídos na assinatura digital. "NotRoot" é o padrão.
Os valores válidos são:
-- Signer: inclui apenas o certificado do signatário.
-- NotRoot: inclui todos os certificados na cadeia de certificados, exceto para a autoridade raiz.
--All: inclui todos os certificados da cadeia de certificados.
Necessário? |
false |
Posição? |
named |
Valor padrão |
|
Aceitar entrada do pipeline? |
false |
Aceitar caracteres curinga? |
false |
-TimestampServer <string>
Usa o servidor de carimbo de data/hora específico para adicionar a data e a hora à assinatura. Digite a URL do servidor de carimbo de data/hora como uma cadeia de caracteres.
O carimbo de data/hora representa o horário exato em que o certificado foi adicionado ao arquivo. Um carimbo de data/hora impede que o script falhe caso o certificado expire, pois os usuários e os programas podem verificar se o certificado era válido na data e hora da assinatura.
Necessário? |
false |
Posição? |
named |
Valor padrão |
|
Aceitar entrada do pipeline? |
false |
Aceitar caracteres curinga? |
false |
-Confirm
Solicita confirmação antes da execução do comando.
Necessário? |
false |
Posição? |
named |
Valor padrão |
|
Aceitar entrada do pipeline? |
false |
Aceitar caracteres curinga? |
false |
-WhatIf
Descreve o que aconteceria se você executasse o comando sem, na verdade, fazê-lo.
Necessário? |
false |
Posição? |
named |
Valor padrão |
|
Aceitar entrada do pipeline? |
false |
Aceitar caracteres curinga? |
false |
<CommonParameters>
Esse cmdlet oferece suporte aos parâmetros comuns: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer e -OutVariable. Para obter mais informações, consulte about_Commonparameters.
Entradas e saídas
O tipo de entrada é o tipo dos objetos que você pode canalizar para o cmdlet. O tipo de retorno é o tipo dos objetos que o cmdlet retorna.
Entradas |
System.String Você pode enviar uma cadeia de caracteres que contém o caminho de arquivo para Set-AuthenticodeSignature. |
Saídas |
System.Management.Automation.Signature |
Exemplo 1
C:\PS>$cert=Get-ChildItem -Path cert:\CurrentUser\my -CodeSigningCert C:\PS>Set-AuthenticodeSignature -FilePath PsTestInternet2.ps1 -certificate $cert Descrição ----------- Esses comandos recuperam um certificado de assinatura de código do provedor de certificados do Windows PowerShell e usam-no para assinar um script do Windows PowerShell. O primeiro comando usa o cmdlet Get-ChildItem e o provedor de certificados do Windows PowerShell para obter os certificados no subdiretório Cert:\CurrentUser\My do repositório de certificados. (A unidade Cert: é aquela exposta pelo provedor de certificados.) O parâmetro CodeSigningCert, o qual é suportado apenas pelo provedor de certificados, limita os certificados recuperados àqueles com autoridade de assinatura de código. O comando armazena o resultado na variável $cert. O segundo comando usa o cmdlet Set-AuthenticodeSignature para assinar o script PSTestInternet2.ps1. Ele usa o parâmetro FilePath para especificar o nome do script e o parâmetro Certificate para especificar que o certificado está armazenado na variável $cert.
Exemplo 2
C:\PS>$cert = Get-PfxCertificate C:\Test\Mysign.pfx C:\PS>Set-AuthenticodeSignature -Filepath ServerProps.ps1 -Cert $cert Descrição ----------- Estes comandos usam o cmdlet Get-PfxCertificate para localizar um certificado de assinatura de código. Então, eles usam isto para assinar um script do Windows PowerShell. O primeiro comando usa o cmdlet Get-PfxCertificate para localizar o certificado C:\Test\MySign.pfx e armazená-lo na variável $cert. O segundo comando usa Set-AuthenticodeSignature para assinar o script. O parâmetro FilePath de Set-AuthenticodeSignature especifica o caminho para o arquivo de script que está sendo assinado e o parâmetro Cert transmite a variável $cert que contém o certificado para Set-AuthenticodeSignature. Se o arquivo de certificado for protegido por senha, o Windows PowerShell solicitará que você digite a senha.
Exemplo 3
C:\PS>Set-AuthenticodeSignature -filepath c:\scripts\Remodel.ps1 -certificate $cert -IncludeChain All -TimeStampServer "http://timestamp.fabrikam.com/scripts/timstamper.dll" Descrição ----------- Esse comando adiciona uma assinatura digital que inclui a autoridade raiz na cadeia confiável e possui assinatura de um servidor de carimbo de data/hora de terceiros. O comando usa o parâmetro FilePath para especificar o script que está sendo assinado e o parâmetro Certificate para especificar o certificado salvo na variável $cert. Ele usa o parâmetro IncludeChain para incluir todas as assinaturas na cadeia de confiança (incluindo a autoridade raiz). Ele usa também o parâmetro TimeStampServer para adicionar um carimbo de data/hora à assinatura. Isso impede que o script falhe quando o certificado expirar.
See Also