La política de ejecución de PowerShell está habilitada de forma predeterminada en Windows 10 y Windows Server 2016, lo que evita que se ejecuten los scripts de PowerShell (archivos con la extensión * .PS1). En este artículo, le mostraremos cómo firmar un script de PowerShell utilizando un certificado de firma de código.

Cree un script de PowerShell simple con el siguiente código:

Write-Host "Hello World! It works"

Guárdelo como archivo TestScript.ps1 e intente ejecutarlo desde la consola de PowerShell elevada:

C:psTestScript.ps1

El script no se ejecutará con un error:

No se puede cargar el archivo C: ps TestScript.ps1. El archivo C: ps TestScript.ps1 no está firmado digitalmente. No puede ejecutar este script en el sistema actual. Para obtener más información sobre la ejecución de scripts y la configuración de la política de ejecución, consulte about_Execution_Policies

+ CategoryInfo : SecurityError: (:) [], PSSecurityException

+ FullyQualifiedErrorId : UnauthorizedAccess

Como puede ver, la ejecución del script de PowerShell está bloqueada por la política de ejecución. El nivel de seguridad actual de la política de ejecución se puede obtener usando el comando:

Get-ExecutionPolicy

ps1 no está firmado digitalmente

En Windows 10, el valor de política predeterminado es Restringido. Esta opción evita que se ejecuten los scripts de PowerShell. Solo puede ejecutar comandos interactivos de PowerShell.

Para permitir que se ejecuten los scripts de PowerShell firmados, debe cambiar el valor de la política a AllSigned o RemoteSigned.

Ejecute el comando (requiere privilegios de administrador):

Set-ExecutionPolicy AllSigned

Presione Y, luego Enter.

powershell no firmado digitalmente

Sin embargo, la política restringida le permite ejecutar scripts de PowerShell firmados digitalmente.

Intentemos firmar su secuencia de comandos de PowerShell con un certificado. En este ejemplo, crearemos un certificado autofirmado (sin embargo, puede utilizar un certificado obtenido de su CA).

  1. Abra una consola de PowerShell elevada y use el cmdlet New-SelfSignedCertificate para crear un certificado de tipo Codesigning:
    New-SelfSignedCertificate -DnsName theitbroscert -CertStoreLocation Cert:CurrentUserMy -Type Codesigning
  2. Ahora abra la Consola de administración de certificados: certmgr.msc> Personal> Certificados. Seleccione y copie su theitbroscert en el portapapeles;
    script de powershell no firmado digitalmente
  3. Luego, pegue este certificado en Trusted Root Certification Authority (o puede importar este certificado a la Trusted Root CA de la computadora);
    El script de PowerShell no está firmado digitalmente
  4. Ahora puede firmar el script de PowerShell con este certificado:
    Set-AuthenticodeSignature -FilePath C:psTestScript.ps1 -Certificate (Get-ChildItem -Path Cert:CurrentUserMy -CodeSigningCert)

    Si el certificado proporcionado es de confianza, la línea de estado debe indicar Válido.
    powershell firmado digitalmente

  5. Si abre su archivo PS1 con cualquier editor de texto, verá un bloque al final del script. Comienza con la etiqueta "# SIG # Comenzar bloque de firmas" y contiene la clave pública. Ahora, siempre que cambie el código de su script PS, deberá volver a firmarlo con su certificado digital.
    firmar digitalmente el script de PowerShell

Ahora, si ejecuta su script de PowerShell, aparecerá una notificación:

¿Quiere ejecutar software de este editor que no es de confianza?

El archivo C: ps TestScript.ps1 es publicado por CN = theitbroscert y no es de confianza en su sistema. Ejecute únicamente scripts de editores de confianza.

Presione Y> Enter para ejecutar el script. Este mensaje solo aparecerá la primera vez que ejecute el script de PowerShell. Para evitar que aparezca esta notificación, debe importar su certificado a la tienda de certificados Trusted Publishers.

powershell remoto firmado

El script de PowerShell ahora se ejecutará sin mostrar ninguna notificación.

firma de powershell

Recomendado para ti

Bestseller No. 1
Hp Elite 8300 - Ordenador de sobremesa + Monitor 24'' (Intel Core i7-3770, 8GB de RAM, Disco de 240 SSD+ 500GB HDD, Lector DVD, WiFi,Windows 10 Pro 64) (Reacondicionado)
  • Procesador Intel Core i7-3770 - 3,40 GHz
  • Monitor 24" Reacondicionado con altavoces integrados, Estado excelente.
  • Almacenamiento de 240GB SSD+500GB HDD
  • Memoria RAM 8GB DDR3
  • Sistema Operativo: Windows 10 PRO
Bestseller No. 2
The Office
  • Amazon Prime Video (Video on Demand)
  • Steve Carell, Rainn Wilson, John Krasinski (Actors)
  • Bryan Gordon (Director)
Bestseller No. 3
El catcher espía
  • Amazon Prime Video (Video on Demand)
  • Paul Rudd, Jeff Daniels, Sienna Miller (Actors)
  • Ben Lewin (Director)