Búsqueda de sitios web

Cómo solucionarlo: el script no se puede cargar porque la ejecución de scripts está deshabilitada


Cuando intenta ejecutar un script de PowerShell, a veces aparece el siguiente mensaje de error:

.\Script.ps1 : File C:\Script.ps1 cannot be loaded because running scripts is disabled
  on this system. For more information, see about_Execution_Policies at
  https:/go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1
+ .\Script.ps1
+ ~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : SecurityError: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

Este mensaje de error se debe a la configuración de la política de ejecución de PowerShell.

Advertencia: Las restricciones existen para protegerlo de la ejecución involuntaria de scripts que puedan dañar su sistema.

La solución para deshacerse de este mensaje de error y ejecutar su script es simple. Pero es necesario considerar el alcance antes de decidir cómo solucionarlo:

  • ¿Quiere que solo se ejecute este script en particular (aquí y ahora)? - o
  • ¿Quieres poder ejecutar todos los scripts todo el tiempo?

(Estas son las dos opciones más comunes utilizadas para resolver este problema, ¡pero existen más!)

Si solo desea ejecutar el script esta vez, use el siguiente comando para permitir que se ejecute en la sesión actual de PowerShell:

Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process

En el comando anterior, el alcance se establece en "Proceso". Esto significa que la nueva política de ejecución solo es válida en el proceso actual. Las antiguas restricciones aún se aplican fuera de esta sesión específica de PowerShell.

Alternativamente, si desea poder ejecutar scripts libremente en su sistema en el futuro, use el siguiente comando:

Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser

Cuando el alcance se establece en "Usuario", la nueva política de ejecución de PowerShell persiste en el registro y permanecerá en las sesiones de PowerShell y en los reinicios del sistema.

Cómo administrar Office 365 sin PowerShell

Buscar en Google los comandos de PowerShell puede llevar mucho tiempo, pero a menudo es necesario, por ejemplo, para sincronizar Azure AD Connect, administrar los permisos del calendario de Office 365 y más.

Organizaciones y empresas de todos los sectores verticales están empezando a utilizar Easy365Manager para simplificar y optimizar sus operaciones diarias de AD y Office 365.

Easy365Manager es un complemento para Usuarios y computadoras de Active Directory que le permite administrar licencias y buzones de correo de Office 365 y realizar la sincronización de Azure AD Connect directamente desde las propiedades del usuario de AD:

Con Easy365Manager, ya no necesita PowerShell para su administración diaria e incluso puede retirar su Exchange Server local.

Mire este seminario web bajo demanda para comprender completamente Easy365Manager:

Lea la lista completa de funciones aquí o descargue la prueba totalmente funcional de 30 días sin riesgos aquí.

Políticas de ejecución de PowerShell

PowerShell ofrece más políticas de ejecución que las dos mencionadas anteriormente.

En total, PowerShell ofrece siete políticas de ejecución diferentes:

1. Todo firmado

Con la política de ejecución AllSigned, los scripts firmados por editores confiables se ejecutan sin ninguna intervención.

Los scripts firmados por entidades que no son de confianza generarán un mensaje que le permitirá ejecutar el script.

2. bypass

Con la omisión, no se bloquea la ejecución de nada y no aparecen mensajes con advertencias.

3. Predeterminado

La política predeterminada varía según el sistema operativo:

Para los clientes de Windows, la política predeterminada indica Restringido.

Para los sistemas operativos de servidor Windows, la política predeterminada indica RemoteSigned.

4. Firmado remoto

Con la política de ejecución RemoteSigned, cualquier script descargado de Internet debe estar firmado por un editor confiable.

Los scripts locales se pueden ejecutar sin una firma digital en el script.

5. Restringido

Esta configuración le permite ejecutar comandos individuales de PowerShell pero bloquea la ejecución de scripts, incluidos los módulos.

6. Indefinido

Esta configuración indica que no hay ninguna política de ejecución configurada (para el alcance actual).

7. Sin restricciones

Esta política de ejecución permite la ejecución de scripts no firmados pero advierte al usuario cuando ejecuta scripts que no provienen de la zona de intranet local.

Alcances de la política de ejecución de PowerShell

Las políticas de ejecución de PowerShell anteriores se pueden configurar en cinco ámbitos diferentes.

Los ámbitos tienen prioridad, de arriba a abajo, en el siguiente orden:

1. Política de máquina

Este alcance lo configura la política informática en un objeto de política de grupo (GPO).

Afecta a todos los usuarios del sistema.

2. Política de usuario

Este alcance lo configura la política de usuario en un objeto de política de grupo (GPO).

Afecta únicamente a los usuarios a los que se dirige el GPO.

3. Proceso

Este alcance solo afecta al proceso actual (sesión de PowerShell).

Cuando se cierra el proceso actual, la política de ejecución configurada ya no existe.

4. Usuario actual

Esta configuración solo afecta al usuario actual y persiste durante los reinicios en el subárbol del registro HKEY_CURRENT_USER.

5. Máquina local

Esta configuración afecta a todos los usuarios del sistema y persiste durante los reinicios en el subárbol de registro HKEY_LOCAL_MACHINE.

Cómo comprobar por qué la ejecución de scripts está deshabilitada

Como las políticas de ejecución se pueden establecer en diferentes niveles de alcance, debe revisarlas todas para comprender por qué se bloquean los scripts en su sistema.

Utilice el siguiente comando para enumerar las políticas de ejecución de PowerShell configuradas para los distintos ámbitos:

Get-ExecutionPolicy -List

El resultado del comando puede ser similar a este:

PS C:\> Get-ExecutionPolicy -List

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process    Unrestricted
  CurrentUser       Undefined
 LocalMachine      Restricted

Tenga en cuenta que los ámbitos superiores tienen prioridad sobre los ámbitos inferiores.

Otras lecturas

Para profundizar más en las políticas de ejecución de PowerShell, consulte la documentación oficial de Microsoft.

Artículos relacionados