@media screen and (min-width: 580px) { .flotantewhatsapp{ display:none; } }

Compartir por WhatsApp

Inicio - Windows - PowerShell - Curso básico de Powershell: Ejecución de scripts

Curso básico de Powershell: Ejecución de scripts

Cuando queremos ejecutar scripts de Powershell en un equipo con Windows tenemos que tener en cuenta la directiva  de seguridad que se aplica para poder ejecutar scripts y comandos.

Si queremos ejecutar un simple script como el siguiente:

Ejemplo básico
Ejemplo básico

Nos encontramos con que no podemos ejecutarlo.

Ejecución denegada
Ejecución denegada

Vamos a explicar por qué. Las directivas de ejecución de Windows PowerShell nos indican si podemos ejecutar scripts o no con el objetivo de controlar que sabemos que script estamos ejecutando. Hay que indicar que las directivas no se preocupan del contenido del script sino de si se puede ejecutar o no. Las directivas pueden tomar los siguientes valores:

  • Restricted
    • Directiva de ejecución predeterminada.
    • Admite comandos individuales, pero no permite ejecutar scripts.
    • Evita que se ejecuten todos los archivos de script, incluidos los archivos de formato y configuración (.ps1xml), los archivos de script de módulos (.psm1) y los perfiles de Windows PowerShell (.ps1).
  • AllSigned
    • Permite ejecutar scripts.
    • Requiere que todas los scripts y archivos de configuración estén firmados por un editor de confianza, incluidos los scripts que se escriben en un equipo local.
    • Pide confirmación antes de ejecutar los scripts de editores que no se han clasificado para indicar si son de confianza o no.
    • Se corre el riesgo de ejecutar scripts sin firmar procedentes de orígenes distintos de Internet y malintencionados, aunque estén firmados.

  • RemoteSigned
    • Permite ejecutar scripts.
    • Requiere una firma digital de un editor de confianza en scripts y archivos de configuración descargados de Internet (también desde programas de correo electrónico y de mensajería instantánea).
    • No requiere firma digital en los scripts ejecutados y escritos en el equipo local (que no se hayan descargado desde Internet).
    • Se corre el riesgo de ejecutar scripts malintencionados, aunque estén firmados.
  • Unrestricted
    • Permite ejecutar scripts sin firma. (Se corre el riesgo de ejecutar scripts malintencionados.)
    • Advierte al usuario antes de ejecutar scripts y archivos de configuración que se descargan de Internet.
  • Bypass
    • No se bloquea nada y no se muestran advertencias ni mensajes.
    • Esta directiva de ejecución está diseñada para configuraciones en las que un script de Windows PowerShell está integrado en una aplicación mayor o para configuraciones en que Windows PowerShell constituye la base de un programa que tiene su propio modelo de seguridad.
  • Undefined
    • No hay ninguna directiva de ejecución establecida en el ámbito actual.
    • Si la directiva de ejecución es Undefined en todos los ámbitos, la directiva de ejecución efectiva es Restricted, que es la directiva de ejecución predeterminada.

 

Ámbito de ejecución de las directivas

Se puede establecer una directiva de ejecución que sea efectiva solamente en un ámbito determinado.
Los valores válidos de Scope son Process, CurrentUser y LocalMachine. LocalMachine es el valor predeterminado cuando se establece una directiva de ejecución.

Los valores de Scope se muestran por orden de precedencia.

  • MachinePolicy y UserPolicy: se establecen a nivel de GPO y no se pueden modificar desde una sesión PowerShell.
  • Process: La directiva de ejecución afecta solamente a la sesión actual (el proceso actual de Windows PowerShell). La directiva de ejecución se almacena en la variable de entorno de $PSExecutionPolicyPreference. Este valor se elimina cuando se cierra la sesión en la que se establece la directiva.
  • CurrentUser:La directiva de ejecución afecta solamente al usuario actual.Se almacena en la subclave HKEY_CURRENT_USER del Registro.
  • LocalMachine: La directiva de ejecución afecta a todos los usuarios del equipo actual. Se almacena en la subclave HKEY_LOCAL_MACHINE del Registro.

Obtener la directiva de ejecución

Obtenemos las directivas con el comando Get-ExecutionPolicy.

Si queremos obtener todas las directivas utilizamos el parámetro -List

Obteniendo la directiva
Obteniendo la directiva

Cambiar la directiva

Para poder realizar un cambio en la directiva utilizamos el cmdlet Set-ExecutionPolicy

Por defecto, si no indicamos el parámetro Scope, se cambia en el ámbito LocalMachine

Cambiando la diectiva
Cambiando la diectiva

Pero indicando el parámetro Scope seleccionamos en que ámbito queremos que se ejecute.

Cambiando la directiva
Cambiando la directiva

 

Cambiar la seguridad para la ejecución de un script concreto.

Se puede dar la situación de que queramos ejecutar un script y la directiva configurada haga que no se ejecute directamente sino que nos muestre un mensaje como el siguiente:

Podemos ejecutar el script con el parámetro -ExecutionPolicy para definir la directiva para esa ejecución, por ejemplo:

Cambiando la directiva en la ejecución
Cambiando la directiva en la ejecución

De esta forma podemos saltarnos la advertencia de seguridad, útil en el caso de tener por ejemplo ese script como tarea programada y no queremos cambiar la directiva a nivel de máquina.

Temas

  1. Introducción
  2. Instalación y requerimientos
  3. Ayuda
  4. Ampliando la funcionalidad
  5. Canalización
  6. Operadores
  7. Comandos básicos
  8. Formato de salida
  9. Importar y Exportar datos
  10. Arrays y HashTables
  11. Ejecución de Scripts
  12. Providers
  13. Trabajos
  14. Scripts y funciones
  15. Gestión de Errores

 

Acerca de Roberto Orayen

Compruebe también

Curso básico de Powershell: Scripts y Funciones

Cualquier comando que podemos ejecutar en una consola PowerShell puede ser escrito y guardado en …

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

4 + 14 =

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies
Blog Maquinas Virtuales