Cómo escribir y ejecutar un archivo de script de PowerShell en Windows 11

PowerShell es una herramienta de línea de comandos desarrollada por Microsoft para automatizar tareas administrativas comunes. Un script es una colección de comandos de PowerShell, almacenados en un archivo de texto con extensión *.ps1. Al ejecutar un script de PowerShell, el intérprete lee el archivo y ejecuta los comandos de forma secuencial.

Puedes crear un script de PowerShell utilizando cualquier editor de texto (incluso Notepad). Pero preferiblemente, se recomienda utilizar un editor de scripts de PowerShell. El editor predeterminado incluido en Windows es el Entorno de Scripting Integrado de PowerShell (PowerShell ISE). Incluye funciones útiles como el resaltado de colores, completado de código, verificación de sintaxis, depuración, autosave, protección contra bloqueos, etc.

Publicidad

Microsoft tiene un editor de código gratuito multiplataforma llamado Visual Studio Code (VS Code), el cual está disponible para Windows, Linux y macOS. Admite una variedad de lenguajes de programación a través de extensiones que puedes instalar, incluyendo PowerShell.

Una ventaja de Visual Studio Code es que admite las versiones más recientes de PowerShell, mientras que PowerShell ISE solo admite hasta la versión 5.1 de PowerShell.

Cómo ejecutar un script de PowerShell (guía rápida)

Aquí tienes un resumen rápido de cómo ejecutar un script de PowerShell. El siguiente método funciona para scripts de PowerShell que no tienen parámetros requeridos y no devuelven salida en el símbolo del sistema.

  1. Haz clic derecho en el script de PowerShell en el Explorador de archivos.
  2. Selecciona Ejecutar con PowerShell en el menú contextual.
  3. El script se ejecutará con una política de ejecución de Bypass. La política de ejecución para la computadora o el usuario no se cambia.

¡Para obtener más detalles sobre cómo escribir y ejecutar scripts de PowerShell, sigue leyendo!

Publicidad

Cómo crear scripts de PowerShell

Hay un par de maneras en las que puedes crear scripts de PowerShell:

  • Con el editor de código multiplataforma Visual Studio Code
  • Con PowerShell ISE
  • O cualquier otro editor de texto, es decir, NotePad

Creando scripts de PowerShell con Visual Studio Code

Visual Studio Code no está disponible por defecto en Windows, por lo que debe descargarse desde el sitio web dedicado de Visual Studio. En nuestro caso, necesitamos descargar la distribución para Windows, la cual está disponible para sistemas de 64 bits, 32 bits y ARM.

A continuación se muestran los diferentes pasos que debes seguir después de instalar la aplicación. En primer lugar, debes abrir Visual Studio Code desde el menú Inicio.

Opening Visual Studio Code from the Windows 11 Start Menu

Instalar la extensión de PowerShell

Abre el menú de extensiones haciendo clic en el icono de extensión que se muestra en la figura siguiente, o usa el atajo de teclado Ctrl + Shift + X.

Publicidad

Open the extensions menu from the left sidebar

Escribe powershell en el cuadro de búsqueda, selecciona la opción más descargada como se muestra a continuación, asegurándote de descargar la extensión proporcionada por Microsoft. Luego haz clic en Instalar

Find the PowerShell extension

Cuando se complete la instalación, no verás ninguna confirmación. Sin embargo, verás que el botón Instalar ha sido reemplazado por las opciones Desactivar y Desinstalar.

Disable and Uninstall options appear after installing the extension

Cómo crear un script de PowerShell con Visual Studio Code

Para crear un nuevo script de PowerShell, ve a Archivo > Nuevo archivo, o usa el atajo de teclado Ctrl + N.

Creating a new PowerShell script

Para especificar que el nuevo archivo es un script de PowerShell, haz clic en Texto sin formato en la parte inferior izquierda, o en Seleccionar un Idioma en el panel de script. Cualquiera de las opciones te llevará a la caja Seleccionar un Modo de Idioma. Escribe powershell y luego selecciona PowerShell.

Specify that the new file is a PowerShell script

Esto activará la Extensión de PowerShell, y notarás un cambio en el comportamiento y la funcionalidad. Primero, verás que el ícono junto al Nombre de Archivo cambiará a PowerShell. Además, notarás que se iniciará la Consola de PowerShell, donde podrás ejecutar comandos y scripts de PowerShell.

Starting the PowerShell Console

El mismo resultado se puede lograr al guardar el archivo con la extensión *.ps1.

Ingresa los siguientes comandos en el panel de script y apreciarás beneficios como el resaltado de colores, autocompletado de comandos y sugerencias de sintaxis en acción:

Write-Host "This is a Visual Studio Code script"
Write-Host "Writing PowerShell Scripts is fun!"
How to type commands in the script pane

Nota: La tercera línea es solo para fines de demostración, para mostrar la opción de autocompletado de comandos.

Para guardar el archivo, puedes usar el menú Archivo: Archivo > Guardar. También puedes utilizar el atajo de teclado Ctrl + S.

Luego, elige una ubicación fácilmente accesible, proporciona el nombre de archivo, asegúrate de especificar *.ps1 como extensión de archivo, y haz clic en Guardar. En este ejemplo, estoy guardando el archivo en C:\TEMP\MiScriptVSCode.ps1.

Save your file as a .ps1

La ejecución de scripts en VS Code se cubrirá más adelante en el artículo.

Creando scripts con el ISE de Windows PowerShell

Para iniciar el PowerShell ISE, haga clic en el botón Inicio (o en el botón de búsqueda) y comience a escribir PowerShell ISE. Verá la aplicación en los resultados de búsqueda con diferentes opciones de apertura. Siempre se recomienda utilizar Ejecutar como administrador para asegurarse de que todas las órdenes se ejecuten correctamente y no se bloquearán.

You need to run the PowerShell ISE as an administrator

Entonces, creemos un script en el PowerShell ISE. Escriba las siguientes líneas, y de nuevo, puede notar características prácticas como el colorido, la autocompleción de comandos, las sugerencias de sintaxis, etc.:

Write-Host "This is a PowerShell ISE script"
Write-Host "Writing PowerShell Scripts is fun!"

 

Creating a script in the PowerShell ISE

Nota: La tercera línea es solo para fines demostrativos, para mostrar la opción de finalización de comandos.

Ahora guardemos la lista de comandos como un script de PowerShell. Para ello, debe hacer clic en el icono de disquete en la barra de herramientas, luego haga clic en Archivo > Guardar en el menú Archivo. También puede utilizar la combinación de teclas Ctrl + S.

En el Guardar como diálogo, elija una carpeta, proporcione un nombre de archivo, especifique la extensión *.ps1 y haga clic en Guardar. En este ejemplo, estoy proporcionando el siguiente nombre: C:\TEMP\MyPowerShellISEScript.ps1.

Saving your PowerShell script

Creación de scripts con NotePad

No se recomienda utilizar un editor de texto básico para escribir scripts de PowerShell, pero es una posibilidad. Tomemos un ejemplo con NotePad

  • Abra NotePad y escriba los siguientes comandos:
Write-Host "This is a Notepad script"
Write-Host "Writing PowerShell Scripts is fun!
You can write PowerShell scripts in NotePad
  • Para guardar el script, seleccione Archivo > Guardar.
  • En el Guardar como diálogo, elija una carpeta y proporcione un nombre de archivo con la extensión *.ps1. En este ejemplo, estoy usando: C:\TEMP\MyNotepadScript.ps1.

Cómo ejecutar scripts de PowerShell

A PowerShell script (*.ps1 file) can be run in the PowerShell console, which recognizes the *.ps1 file type and runs the commands sequentially. You may open the script as a file in code editors like the PowerShell ISE and Visual Studio Code, and run the whole script in the console pane or run only a part of it.

Cómo habilitar scripts de PowerShell cambiando la directiva de ejecución

Las directivas de ejecución de PowerShell son una característica de seguridad que controla las condiciones bajo las cuales PowerShell carga archivos de configuración y ejecuta scripts. Es importante señalar que esto no es un sistema de seguridad ya que las directivas de ejecución pueden ser fácilmente evitadas. Sin embargo, ayudan a proteger a los usuarios de ejecutar scripts de manera involuntaria.

La directiva de ejecución predeterminada para Windows 11 es Restricted. En sistemas operativos no Windows, la directiva de ejecución predeterminada es Unrestricted, y no se puede cambiar.

Para ver la directiva de ejecución actual, use el comando de PowerShell Get-ExecutionPolicy.

Puedes cambiar la directiva de ejecución en Windows utilizando el cmdlet Set-ExecutionPolicy:

 Set-ExecutionPolicy -ExecutionPolicy <PolicyName>

Las diferentes directivas de ejecución se discutirán en el siguiente tema.

Cambiar la directiva de ejecución de PowerShell

En Windows, puedes establecer la directiva de ejecución para la máquina local, el usuario actual o el proceso de PowerShell.

Para listar todos los ámbitos disponibles, utilice Get-ExecutionPolicy -List.

Get-ExecutionPolicy -List

El orden es importante, por lo que el elemento configurado en el nivel más alto tiene prioridad. Por ejemplo, si ha establecido una directiva de ejecución mediante una directiva de grupo, ésta tendrá prioridad sobre las demás.

The highest configured item takes precedence
Policy Description
Restricted The default execution policy for Windows client OSes. It does not allow ANY scripts (*.ps1 files) to be executed. Still, you may run individual commands.
RemoteSigned The default execution policy for Windows Server. It Allows running scripts that are created locally. Scripts downloaded from untrusted locations, like the Internet, e-mail, messengers, etc. must be digitally signed by a trusted publisher. You may use the command Unblock-File to allow a script to run on the system.  
Unrestricted The default execution policy for non-Windows computers, and it cannot be changed. It allows unsigned scripts to run, but it shows a warning message and asks for confirmation if scripts are coming from an untrusted location.
AllSigned It requires all scripts running on the machine to be digitally signed by a trusted publisher, no matter if they are created locally on the machine or downloaded from the Internet.
Bypass It allows all scripts to run, like Unrestricted, but no confirmation is required.
Undefined There is no execution policy set on the specified scope. If all scopes are set as undefined, then the default execution policies are applied.
The different PowerShell execution policies

Para permitir que PowerShell ejecute scripts, debe utilizar el comando Set-ExecutionPolicy -ExecutionPolicy <PolicyName>.

Set-ExecutionPolicy -ExecutionPolicy <PolicyName>

Por defecto, este comando aplica su política elegida al ámbito Máquina local. Si desea especificar un ámbito diferente, debe utilizar el parámetro -Scope y proporcionar el nombre del ámbito.

Por ejemplo, el siguiente comando establece la directiva de ejecución en No restringido para el usuario actual:

Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser

Ejecutar un script con PowerShell

Para abrir la consola de PowerShell, haga clic en el botón Inicio (o en el botón de búsqueda), escriba powershell y haga clic en Ejecutar como administrador.

Run the PowerShell console as an administrator

Para ejecutar un script en la consola de PowerShell, puede:

  • Utilizar la ruta completa al script, como: C:\TEMP\MyNotepadScript.ps1
  • O utilizar solo el nombre del script, desde la carpeta donde se encuentra el archivo: .\MyNotepadScript.ps1

Ejecutar un script de PowerShell en Visual Studio Code

Para ejecutar un script en Visual Studio Code, primero debe iniciar la aplicación y abrir el archivo del script creado anteriormente (C:\TEMP\MyVSCodeScript.ps1).

  • Seleccione Archivo > Abrir Archivo o use el atajo de teclado Ctrl + O.
  • Con el script cargado en VS Code, puede ejecutarlo haciendo clic en el botón Ejecutar en la esquina superior derecha, o presionando F5 en su teclado.

El script se ejecutará en la pestaña de la consola, donde verá la salida del script.

The script is being executed in the console pane

Otra opción sería ejecutar solo una parte del script (Ejecutar Selección). Esto suele ser útil cuando está creando su script y desea confirmar que partes de él se comportan como se esperaba.

  • Para ejecutar una selección del script, resalte la parte que desea ejecutar.
  • Haga clic en Ejecutar Selección en la esquina superior derecha de la consola, o presione F8 en su teclado.

Esta vez, VS Code ejecuta solo las líneas de código seleccionadas en la pestaña de la consola.

How to run only a part of a script

Ejecutar un script en PowerShell ISE

Ejecutar scripts en PowerShell ISE es bastante similar.

  • Inicie PowerShell ISE.
  • Abra el script de la demostración anterior (en este caso – C:\TEMP\MyPowerShellISEScript.ps1) usando Archivo > Abrir, o el Abrir icono desde la barra de herramientas, o el atajo de teclado Ctrl + O.
  • Seleccione el archivo de script y haga clic en Abrir.

Para ejecutar todo el script, use el botón Ejecutar en la barra de herramientas o presione F5 en su teclado. Esto ejecutará el archivo de script en la pestaña de la consola, devolviendo el resultado.

Running a script in the PowerShell ISE

Si necesita ejecutar solo una parte del script, resalte la sección y seleccione Ejecutar selección desde la barra de herramientas, o presione F8 en su teclado. De nuevo, el PowerShell ISE solo ejecutará las líneas de código seleccionadas.

You can also execute only part of the script

Ejecutar un script de PowerShell desde el símbolo del sistema

Si los archivos *.ps1 son interpretados por PowerShell, el símbolo del sistema (CMD) no puede trabajar con scripts de PowerShell directamente. Si desea ejecutar un script de PowerShell en CMD, deberá ejecutarlo llamando al proceso de PowerShell con el parámetro -File, como se muestra a continuación:

PowerShell -File C:\TEMP\MyNotepadScript.ps1.

Conclusión

Los scripts de PowerShell son una excelente manera de automatizar tareas repetitivas. Siga la regla general: “Si necesita hacer algo más de una vez, scripteo”, ¡y no puede ir mal!

Artículo relacionado:

Source:
https://petri.com/how-to-write-and-run-a-powershell-script-file-on-windows-11/