Cuando se intenta ejecutar un script de PowerShell que no ha sido firmado por un editor de confianza, puede aparecer el siguiente error de seguridad:
«script.ps1 :El archivo path\script.ps1 no se puede cargar. El archivo path\script.ps1 no está firmado digitalmente. No puede ejecutar este script en el sistema actual.»
Este error de seguridad puede producirse cuando la política de ejecución de PowerShell está configurada como Allsigned o Remotesigned y el script no está firmado.
La política de ejecución Allsigned permite la ejecución de todos los scripts de Powershell que están firmados. Antes de ejecutar el script se le pedirá que confirme que confía en el editor que ha firmado el script.
La política de ejecución remota restringe la ejecución de los scripts descargados que no están firmados. Los scripts que se ejecutan desde el equipo local no tienen que estar firmados.
Solución
Hay diferentes métodos para superar este error. Puede optar por firmar el script de PowerShell, cambiar la política de ejecución, omitir la política o desbloquear el archivo para que pueda ejecutarse una vez en esa sesión.
Comprobar la política de ejecución
En primer lugar, compruebe su política de ejecución utilizando el cmdlet Get-ExecutionPolicy
PS C:\> Get-ExecutionPolicyAllSigned
El parámetro de la lista en el cmdlet Get-ExecutionPolicy le indica la política de ejecución para cada ámbito.
PS C:\> Get-ExecutionPolicy -list Scope ExecutionPolicy ----- --------------- MachinePolicy Undefined UserPolicy Undefined Process Undefined CurrentUser Undefined LocalMachine RemoteSigned
La política de ejecución predeterminada para todas las versiones de Windows excepto para Windows 2012 R2 es Restringida. La política de ejecución por defecto en Windows 2012 R2 es RemoteSigned.
Cambiar la política de ejecución de forma permanente
El método más fácil pero poco seguro para deshacerse de este mensaje de error es cambiar la ExecutionPolicy utilizando el cmdlet SetExecutionPolicy. El siguiente comando establece la política de ejecución como no restringida.
PS C:\> Set-ExecutionPolicy unrestricted
Pulse Y para confirmar el cambio cuando se le solicite. El cambio de política se actualiza en el registro y permanecerá hasta que lo cambie de nuevo.
Cambiar la política de ejecución temporalmente
En lugar de cambiar la política de ejecución permanentemente, podría establecer una política diferente para una sola sesión de PowerShell. Esto se hace utilizando el parámetro ExecutionPolicy de powershell.exe
Abra un símbolo del sistema o PowerShell y ejecute el comando:
C:\> powershell.exe -executionpolicy -bypass
El comando anterior abre una sesión de PowerShell con la política de ejecución para esa sesión establecida en Bypass, lo que significa que no se bloquea nada.
Desbloqueo de un archivo descargado
Cuando la política de ejecución es RemoteSigned, los archivos que se descargan de Internet (o de correos electrónicos) se bloquean para proteger la ejecución de scripts no seguros. Si confía en que el contenido del script es seguro, puede desbloquearlo para que se ejecute en su sesión mediante el cmdlet Unblock-File
PS C:\> Unblock-File -Path C:\Downloads\script1.ps1
Una vez que haya cambiado la política de ejecución de forma permanente o temporal para una sesión o un script en particular, puede seguir ejecutando el script, pero antes de hacerlo asegúrese de que el contenido del script no daña su equipo
.