La política de ejecución es una de las medidas de seguridad de Windows que determina si los scripts de PowerShell se pueden ejecutar en una computadora.

Tomemos como ejemplo un Windows 10 limpio. Crea un archivo de texto test_script.ps1 (con la extensión PS1) y con el siguiente código:

get-service bits, wuauserv

Este sencillo script de PowerShell debería mostrar el estado de los servicios BITS y Windows Update.

Abra una consola de PowerShell elevada; vaya a la carpeta del script y ejecute:

PS C:Windowssystem32> cd C:PS

PS C:PS> .test_script.ps1

Debería aparecer un error:

test_script.ps1: el archivo C: PS test_script.ps1 no se puede cargar porque la ejecución de scripts está deshabilitada en este sistema.

Para obtener más información sobre_Políticas de ejecución_en http://go.microsoft.com/fwlink/?LinkID=135170.

En línea: 1 carácter: 1

+. test_script.ps1

+ ~~~~~~~~~~~~~~~~~

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

+ FullyQualifiedErrorId: UnauthorizedAccess

Como puede ver, los scripts de PowerShell no pueden ejecutarse en Windows de forma predeterminada (incluso para un administrador). La política de seguridad que controla la capacidad de ejecutar scripts de PowerShell en Windows se llama Política de ejecución.

Puede verificar el valor actual de la Política de ejecución en Windows 10 usando el comando:

Get-ExecutionPolicy

O directamente desde el registro:

get-erty -path HKLM:SOFTWAREMicrosoftPowerShell1ShellIdsMicrosoft.PowerShell -name "ExecutionPolicy”

De forma predeterminada en Windows 10, este parámetro está establecido en Restringido, lo que evita que se ejecuten los scripts de PowerShell.

Puede establecer uno de los siguientes valores en la Política de ejecución de PowerShell:

  • Restringido - es un valor predeterminado. Bloquea la ejecución de cualquier script y solo permite ejecutar comandos interactivos en la consola de PowerShell;
  • Todo firmado - permite la ejecución de scripts de PowerShell con firma digital;
  • Firmado a distancia - permite ejecutar scripts locales sin firma. Se requiere una firma digital para ejecutar archivos PS1 descargados de Internet o recibidos de una red local;
  • Irrestricto - se permiten todos los scripts de PowerShell. Cuando ejecuta una secuencia de comandos sin firmar que se descargó de Internet, aparecerá un mensaje de confirmación;
  • Derivación - en este modo, no se bloquea nada, no aparecen advertencias ni indicaciones.

Tenga en cuenta que puede configurar la política de ejecución de PowerShell en Windows en diferentes niveles:

Get-ExecutionPolicy -list

powershell permite scripts

  • MachinePolicy
  • UserPolicy
  • Proceso
  • Usuario actual
  • Máquina local

De forma predeterminada, la política LocalMachine = Restricted se establece en el nivel de la computadora. Para permitir que los scripts de PowerShell se ejecuten solo en la sesión actual, puede ejecutar los comandos:

Set-ExecutionPolicy RemoteSigned –Scope Process

Insinuación. Solo un administrador puede cambiar la configuración de la Política de ejecución de PowerShell.

Cambio de política de ejecución

La política de ejecución ayuda a protegerte de los scripts en los que no confías. Cambiar la política de ejecución podría exponerlo a los riesgos de seguridad descritos en el tema de ayuda about_Execution_Policies en http://go.microsoft.com/fwlink/?LinkID=135170. ¿Quieres cambiar la política de ejecución?

[Y] sí [A] Sí a todo [N] No [L] No a todo [S] Suspender [?] Ayuda (el valor predeterminado es "N"):

Presione Y> Enter.

Ahora puede ejecutar su script de PS1.

Los scripts de ejecución de powershell están deshabilitados en este sistema

Sin embargo, si cierra la consola actual de PowerShell.exe y abre una nueva, evitará que los scripts de PS1 se vuelvan a ejecutar. La configuración más segura para el parámetro Política de ejecución de PowerShell, que le permitirá ejecutar scripts de PS1 y proporcionar un nivel de seguridad suficiente, es RemoteSigned.

Para habilitar este modo a nivel de computadora, ejecute:

Set-ExecutionPolicy RemoteSigned

Ahora, incluso si reinicia su consola PowerShell, no se bloqueará la ejecución de los scripts. Para permitir que se ejecuten los scripts de PowerShell, establezca el modo en Irrestricto (pero esto no se recomienda desde el punto de vista de la seguridad):

Set-ExecutionPolicy RemoteSigned

También puede configurar la política de ejecución de PowerShell en Windows a través de GPO. Para hacer esto, ejecute el Editor de políticas de grupo local (gpedit.msc) y habilite el Activar la ejecución de script política en la sección Configuración del equipo> Plantillas administrativas> Componentes de Windows> Windows PowerShell.

la ejecución de scripts está deshabilitada en este sistema

Los siguientes valores están disponibles en la política:

  • Permitir solo scripts firmados;
  • Permitir secuencias de comandos locales y secuencias de comandos firmadas de forma remota;
  • Permitir todos los scripts.

Actualice su configuración de GPO para aplicar los cambios.

Recomendado para ti