El error de PowerShell no es firmado digitalmente a menudo se activa mientras los usuarios ejecutan scripts de PowerShell. Generalmente ocurre debido a los valores establecidos para la Directiva de ejecución de PowerShell.
Como parte de nuestros Servicios de Administración de Servidores, ayudamos a nuestros Clientes a corregir errores relacionados con Windows con regularidad.
Hablemos hoy de las posibles causas y correcciones de este error.
¿Qué es PowerShell no está firmado digitalmente?
Al intentar ejecutar un script de PowerShell que no ha sido firmado por un editor de confianza, los usuarios a menudo ven un error de seguridad «PowerShell no está firmado digitalmente», como se muestra a continuación:
Este error de seguridad puede producirse cuando tenemos una Directiva de ejecución de PowerShell con firma AllSigned o RemoteSigned.
Ahora, vamos a discutir algunos métodos posibles para corregir este error.
¿Cómo solucionar que PowerShell no es un error con firma digital?
Hay algunos métodos posibles para corregir este error. Echemos un vistazo a cada uno de ellos uno por uno.
Comprobar y cambiar la Política de ejecución
El primer paso aquí es comprobar la Política de ejecución. Podemos ejecutar el cmdlet Get-ExecutionPolicy para obtener la Directiva de ejecución. El parámetro list del cmdlet Get-ExecutionPolicy nos indica la directiva para cada ámbito.
PS C:\> Get-ExecutionPolicy -list
Una vez que tengamos una idea de las políticas de ejecución, el método más fácil pero inseguro para deshacerse de este mensaje de error es cambiar la política de ejecución a sin restricciones.
Además, podemos cambiar la Directiva de ejecución mediante el cmdlet SetExecutionPolicy. El siguiente comando establece la directiva de ejecución en Sin restricciones:
PS C:> Set-ExecutionPolicy unrestricted.
Pulse Y para confirmar el cambio cuando se le solicite.
A continuación, actualiza el cambio de directiva en el registro y permanece de esta manera hasta que lo cambiemos de nuevo
Omitir la sesión actual de PowerShell
Para cambiar temporalmente la directiva de ejecución, podemos usar el cmdlet Set-ExecutionPolicy con la configuración OmItir.
Set-ExecutionPolicy -Scope Process -ExecutionPolicy ByPass
Este sencillo comando anterior configurará la directiva de ejecución para omitir la sesión de PowerShell actual. Una vez que cerramos esta sesión de PowerShell, pierde esta configuración.
Valores aceptables para el parámetro ExecutionPolicy
A continuación se muestra el detalle de los valores aceptables para el parámetro-ExecutionPolicy:
- Restringido. No carga archivos de configuración ni ejecuta scripts. Restringido es la directiva de ejecución predeterminada.
- AllSigned. Requiere que un editor de confianza firme todos los scripts y archivos de configuración, incluidos los scripts que escribimos en el equipo local.
- RemoteSigned. Requiere que un editor de confianza firme todos los scripts y archivos de configuración descargados de Internet.
- sin restricciones. Carga todos los archivos de configuración y ejecuta todos los scripts. Pide permiso si ejecutamos un script sin firmar descargado de Internet.
- Bypass. No bloqueará nada y no hay advertencias ni avisos.
- Indefinido. Elimina la directiva de ejecución asignada actualmente del ámbito actual. Este parámetro no eliminará una directiva de ejecución establecida en un ámbito de directiva de grupo.
El ámbito predeterminado para el comando Set-ExecutionPolicy es LocalMachine. También podemos especificar el ámbito de la política añadiendo el parámetro-Scope. Por ejemplo, algunos de los ámbitos que podemos establecer incluyen:
- Proceso: La directiva de ejecución afecta solo al proceso de PowerShell actual.
- CurrentUser: La directiva de ejecución solo afecta al usuario actual.
- Máquina local: La directiva de ejecución afecta a todos los usuarios del equipo.
Además, para eliminar una directiva de ejecución de un ámbito en particular, establezca la directiva de ejecución para ese ámbito en Indefinido.
Desbloquee el archivo descargado
Para la directiva de ejecución de diseño remoto, firme todos los scripts y archivos de configuración descargados de Internet o de correos electrónicos de un editor de confianza.
Si confiamos en que el contenido del script es seguro, podemos desbloquearlo para que se ejecute en la sesión mediante el cmdlet Unblock-File:
PS C:> Unblock-File -Path C:Downloadsscript1.ps1
Conclusión
En resumen, el error de seguridad de PowerShell no está firmado digitalmente puede producirse cuando la Directiva de ejecución de PowerShell se establece en AllSigned o RemoteSigned. Hoy, vimos cómo nuestros ingenieros de soporte solucionan este error.