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




Sumário