Dominando PowerShell: Guía para principiantes de scripting potente
Comencemos a aprender lecciones de PowerShell. Primero, aprenderemos:
¿Qué es PowerShell?
Windows PowerShell es un motor de automatización orientado a objetos y lenguaje de scripting. Está diseñado principalmente para profesionales de TI y administradores de sistemas para controlar y automatizar la administración de Windows OS y otras aplicaciones. Proporciona conceptos nuevos y convincentes para extender el conocimiento que has adquirido y los scripts que has creado dentro de los entornos de Windows Command Prompt y Windows Script Host.
Combina la flexibilidad del scripting, la velocidad de línea de comandos y el poder de una herramienta de administración basada en GUI. Te permite resolver problemas eficientemente ayudando al administrador de sistemas a eliminar horas de trabajo manual futuro. Repasaremos todos los aspectos importantes que debes saber para aprender PowerShell.
En este tutorial de PowerShell para principiantes, aprenderás los fundamentos de PowerShell como:
- ¿Qué es PowerShell?
- ¿Por qué usar PowerShell?
- Historia de PowerShell
- Características de PowerShell
- Cómo iniciar PowerShell
- Cmdlet de PowerShell
- Cmdlet vs Comando:
- Tipos de datos de PowerShell:
- Variables especiales
- Scripts de PowerShell
- Primer script de PowerShell
- ¿Qué es PowerShell ISE?
- Conceptos de PowerShell
- PowerShell vs Command Prompt
- Aplicaciones de PowerShell
Esta es una guía completa de los fundamentos de scripting en PowerShell… ¡empecemos!
¿Por qué usar PowerShell?
Aquí hay algunas razones importantes para usar PowerShell:
- PowerShell ofrece una experiencia de línea de comandos bien integrada para el sistema operativo
- PowerShell permite acceso completo a todos los tipos en el framework .NET
- Confiado por administradores de sistemas.
- PowerShell es una forma simple de manipular componentes de servidores y estaciones de trabajo
- Está orientado hacia administradores de sistemas creando una sintaxis más fácil
- PowerShell es más seguro que ejecutar VBScript u otros lenguajes de scripting
Historia de PowerShell
La primera versión 1.0 de PowerShell se lanzó en 2006. Hoy, PowerShell está en la versión 7.2. A medida que pasan los años y versiones, las capacidades y entornos de alojamiento de PowerShell crecieron significativamente.
Veamos la historia de PowerShell por versiones:
- PowerShell versión 1 soportaba la administración local de Windows Server 2003
- PowerShell 2.0 se integró con Windows 7 y Windows Server 2008 R2. Esta versión soporta remoting y mejora capacidades como transacciones, trabajos en segundo plano, eventos, depuración, etc.
- PowerShell 3.0 se lanzó como parte interna del framework de administración de Windows. Se instaló en Windows 8 y Windows Server 2012. Puedes añadir y programar trabajos, conectividad de sesión, carga automática de módulos, etc.
- PowerShell 4.0 se envió con Windows 8.1 y Windows Server 2012 R2. En esta versión se añadió soporte para configuración de estado deseado, depuración mejorada, diagnósticos de red.
- PowerShell 5.0 se lanzó como parte interna del framework de administración de Windows 5. Las características de esta versión son depuración remota, definiciones de clases, enumeraciones .NET, etc.
- PowerShell 7.2 se lanzó. Está construido sobre .NET 6.0. Esta versión ofrece nuevos operadores, vista de error simplificada y dinámica, notificaciones automáticas de nueva versión, etc.
A continuación, en este tutorial de scripting de PowerShell, aprenderemos sobre características de PowerShell.
Características de PowerShell
- Remoting de PowerShell: PowerShell permite invocar scripts y cmdlets en una máquina remota.
- Trabajos en segundo plano: Ayuda a invocar script o pipeline asíncronamente. Puedes ejecutar tus trabajos ya sea en la máquina local o múltiples máquinas operadas remotamente.
- Transacciones: Habilitan cmdlet y permiten a desarrolladores realizar
- Eventos: Este comando te ayuda a escuchar, reenviar y actuar sobre eventos de gestión y sistema.
- Transferencia de archivos de red: PowerShell ofrece soporte nativo para transferencia de archivos priorizada, asíncrona, limitada, entre máquinas usando tecnología Background Intelligent Transfer Service (BITS).
Cómo iniciar PowerShell
Ahora en este tutorial de script de PowerShell, aprenderemos cómo iniciar PowerShell en Windows OS.
PowerShell viene preinstalado en todas las versiones recientes de Windows. Necesitamos iniciar PowerShell para lo cual seguimos los pasos dados:
Paso 1) Buscar PowerShell en Windows. Seleccionar y Clic

Paso 2) Se abre la ventana de Power Shell

Cmdlet de PowerShell
Un cmdlet, que también se llama Command let, es un comando ligero usado en el entorno PowerShell basado en Windows. PowerShell invoca estos cmdlets en el símbolo del sistema. Puedes crear e invocar comandos cmdlet usando APIs de PowerShell.
Cmdlet vs. Comando:
Los cmdlets son diferentes de los comandos en otros entornos de shell de comandos en los siguientes aspectos:
- Los cmdlets son objetos de clase .NET Framework. No pueden ejecutarse por separado
- Los cmdlets pueden construirse desde tan solo una docena de líneas de código
- El análisis, formateo de salida y presentación de errores no son manejados por cmdlets
- Los cmdlets trabajan sobre objetos. Así que flujos de texto y objetos no pueden pasarse como salida para tuberías (pipelining)
- Los cmdlets son basados en registros, por lo que procesan un solo objeto a la vez
La mayor parte de la funcionalidad de PowerShell proviene de los Cmdlets, que siempre están en formato verbo-sustantivo y no en plural. Además, los Cmdlets devuelven objetos, no texto. Un cmdlet es una serie de comandos, que es más de una línea, almacenada en un archivo de texto con extensión .ps1.
Un cmdlet siempre consiste en un verbo y un sustantivo, separados por un guión. Algunos de los verbos usados para aprender PowerShell son:
- Get — Para obtener algo
- Start — Para ejecutar algo
- Out — Para emitir algo
- Stop — Para detener algo que se está ejecutando
- Set — Para definir algo
- New — Para crear algo
Comandos de PowerShell
A continuación se muestra una lista de comandos importantes de PowerShell:
Get-Help: Ayuda sobre comandos y temas de PowerShell
Ejemplo: Mostrar información de ayuda sobre el comando Format-Table
Get-Help Format-Table

Get-Command: Obtener información sobre cualquier cosa que pueda invocarse
Ejemplo de script PowerShell: Generar una lista de cmdlets, funciones instaladas en tu máquina
Get-Command

Get-Service: Encuentra todos los cmdlets con la palabra 'service' en él.
Ejemplo: Obtener todos los servicios que comienzan con "vm"
Get-Service "vm*"

Get-Member: Muestra qué se puede hacer con un objeto
Ejemplo: Obtener miembros de los procesos vm.
Get-Service "vm*" | Get-Member

Otros comandos:
- Get Module Muestra paquetes de comandos
- Get Content Este cmdlet puede tomar un archivo y procesar su contenido y hacer algo con él
- Get- Encuentra todos los cmdlets que comienzan con la palabra 'get-
Ejemplo: Crear una carpeta
New-Item -Path 'X:\Guru99' -ItemType Directory
Salida

Tipos de datos de PowerShell:
Tipos de datos de PowerShell
Variables especiales
| Variable especial | Descripción |
|---|---|
| $Error | Array de objetos de error que muestra los errores más recientes |
| $Host | Muestra el nombre de la aplicación de alojamiento actual |
| $Profile | Almacena la ruta completa de un perfil de usuario para el shell predeterminado |
| $PID | Almacena el identificador de proceso |
| $PSUICulture | Contiene el nombre de la cultura de UI actual |
| $NULL | Contiene valor vacío o NULL |
| $False | Contiene valor FALSO |
| $True | Contiene valor VERDADERO |
Scripts de PowerShell
Los scripts de PowerShell se almacenan en archivo .ps1. Por defecto, no puedes ejecutar un script solo haciendo doble clic en un archivo. Esto protege tu sistema de daño accidental. Para ejecutar un script:
Paso 1: clic derecho y clic en "Ejecutar con PowerShell."

Además, hay una política que restringe la ejecución de scripts. Puedes ver esta política ejecutando el comando Get-ExecutionPolicy.
Obtendrás una de las siguientes salidas:
- Restricted— No se permiten scripts. Esta es la configuración predeterminada, así que se mostrará la primera vez que ejecutes el comando.
- AllSigned— Puedes ejecutar scripts firmados por un desarrollador de confianza. Con esta configuración, un script pedirá confirmación de que quieres ejecutarlo antes de ejecutarse.
- RemoteSigned— Puedes ejecutar tus scripts o scripts firmados por un desarrollador de confianza.
- Unrestricted— Puedes ejecutar cualquier script que quieras ejecutar
Pasos para cambiar la política de ejecución
Paso 1) Abrir un símbolo de PowerShell elevado. Clic derecho en PowerShell y "Ejecutar como Administrador"

Paso 2) Ingresar los siguientes comandos
- Get-ExecutionPolicy
- Set-executionpolicy unrestricted
- Ingresar Y en el prompt
- Get-ExecutionPolicy

Primer script de PowerShell
En un bloc de notas escribe el siguiente comando
Write-Host "¡Hola, Guru99!"
Los scripts de PowerShell tienen extensión ps1. Guarda el archivo como PrimerScript.ps1

En PowerShell, llama al script usando el comando
& "X:\PrimerScript.ps1"

¿Qué es PowerShell ISE?
El Entorno de Scripting Integrado de Windows PowerShell (ISE) es el editor predeterminado para Windows PowerShell. En este ISE, puedes ejecutar comandos, escribir pruebas y depurar scripts en un entorno GUI basado en ventana. Puedes hacer edición multilínea, coloreado de sintaxis, completado de pestaña, ejecución selectiva y muchas otras cosas.
Windows PowerShell ISE también te permite ejecutar comandos en un panel de consola. Sin embargo, también soporta paneles que puedes usar para ver simultáneamente el código fuente de tu script y otras herramientas que puedes conectar al ISE.
Incluso puedes abrir múltiples ventanas de script al mismo tiempo. Esto es específicamente útil cuando estás depurando un script que usa funciones definidas en otros scripts o módulos.
PowerShell ISE
El mismo script que creamos en bloc de notas, puede crearse en ISE
- Pegar código en el editor
- Guardar Script
- Usar F5 para ejecutar el script
- Observar salida en la consola

Ejemplo 2:
El siguiente código dará la Memoria Virtual Libre en tu máquina
Get-WmiObject -Class Win32_OperatingSystem –ComputerName localhost | Select-Object -Property CSName,FreeVirtualMemory

Conceptos de PowerShell
Ahora en este tutorial de PowerShell para principiantes, aprenderemos sobre conceptos importantes de PowerShell:
Cmdlets Los cmdlets son comandos construidos escritos en lenguajes .net como VB o C#. Permite a desarrolladores extender el conjunto de cmdlets cargando y escribiendo snap-ins de PowerShell.
Funciones Las funciones son comandos escritos en el lenguaje PowerShell. Pueden desarrollarse sin usar otro IDE como Visual Studio y devs.
Scripts Los scripts son archivos de texto en disco con extensión .ps1
Aplicaciones Las aplicaciones son programas existentes de Windows.
What if Dice al cmdlet que no ejecute, sino que diga qué pasaría si el cmdlet se ejecutara.
Confirm Instruye al cmdlet que solicite confirmación antes de ejecutar el comando.
Verbose Da un nivel de detalle superior.
Debug Instruye al cmdlet que proporcione información de depuración.
ErrorAction Instruye al cmdlet que realice una acción específica cuando ocurre un error. Acciones permitidas: continue, stop, silently-continue e inquire.
ErrorVariable Especifica la variable que contiene información de error.
OutVariable Dice al cmdlet que use una variable específica para contener la información de salida.
OutBuffer Instruye al cmdlet que retenga el número específico de objetos antes de llamar al siguiente cmdlet en la tubería.
Ventajas de usar script de PowerShell
- Los scripts de PowerShell son realmente potentes y pueden hacer muchas cosas en pocas líneas.
- Las variables se declaran en la forma $<variable>
- Las variables pueden usarse para contener la salida de comando, objetos y valores.
- "Tipo" de una variable no necesita ser especificado.
PowerShell vs. Command Prompt
| PowerShell | Command Prompt |
|---|---|
| PowerShell se integra profundamente con Windows OS. Ofrece interfaz de línea de comandos interactiva y lenguaje de scripting. | Command Prompt es una interfaz de línea de comandos predeterminada proporcionada por Microsoft. Es una aplicación win32 simple que puede interactuar y hablar con cualquier objeto win32 en el sistema operativo Windows. |
| PowerShell usa lo que se conoce como cmdlets. Pueden invocarse ya sea en el entorno de runtime o en scripts de automatización. | No se ofrecen tales características por command prompt. |
| PowerShell los considera como objetos. Así que la salida puede pasarse como entrada a otros cmdlets a través del pipeline. | Command Prompt o incluso el shell *nix, la salida generada desde un cmdlet no es solo un flujo de texto sino una colección de objetos. |
| PowerShell es muy avanzado en cuanto a características, capacidades y funcionamiento interno. | Command prompt es muy básico. |
Aplicaciones de PowerShell
Hoy, PowerShell se ha convertido en una opción ideal para administradores de TI ya que facilita la operación de gestión y el esfuerzo en grandes redes corporativas. Por ejemplo, supongamos que estás gestionando una gran red que contiene más de cuatrocientos servidores. Ahora quieres implementar una nueva solución de seguridad. Esta solución de seguridad depende de un cierto servicio que necesita ejecutarse en esos servidores.
Seguramente puedes iniciar sesión en cada servidor y ver si tienen ese servicio instalado y ejecutándose o no. Sin embargo, ciertamente toma mucho tiempo y errores humanos ya que tu personal necesita pasar mucho tiempo en este proceso no productivo.
Sin embargo, si usas PowerShell, entonces podrías completar esta tarea en solo unos minutos. Eso es porque toda la operación se hace con un solo script que recopila información sobre los servicios que se ejecutan en los servidores.
Resumen
- Windows PowerShell es motor de automatización orientado a objetos y lenguaje de scripting
- PowerShell ofrece una experiencia de línea de comandos bien integrada para el sistema operativo
- PowerShell primera versión 1.0 se lanzó en 2006
- PowerShell permite invocar scripts y cmdlets en una máquina remota
- PowerShell viene preinstalado en todas las versiones recientes de Windows
- Un cmdlet es un comando ligero usado en el entorno PowerShell basado en Windows
- Get, Start, Out, Stop, Set, New son comandos importantes de PowerShell
- Boolean, Byte, Char, Decimal, Long son tipos de datos importantes de PowerShell
- $Error, $Host, $Profile, $PID, $PSUICulture, $NULL son algunas variables especiales usadas en PowerShell
- El Entorno de Scripting Integrado de Windows PowerShell (ISE) es el editor predeterminado para PowerShell
- PowerShell se integra profundamente con Windows OS mientras que Command Prompt es una interfaz de línea de comandos predeterminada proporcionada por Microsoft
- PowerShell se ha convertido en una opción ideal para administradores de TI ya que facilita la operación de gestión y el esfuerzo en grandes redes corporativas
Lenguaje C
- Instalación de Windows 10 IoT Core en Raspberry Pi 3 Model B+: Guía Paso a Paso
- Construye un Robot Evitaobstáculos con Raspberry Pi: Guía para Principiantes
- Fabricación metálica 101: Guía clara para principiantes
- Routers CNC para Principiantes: Domina el Mercado con Precisión Sin Esfuerzo
- Domine el Fresado CNC: 4 Consejos Esenciales para Principiantes
- Instalación de Visual Studio 2019 Community Edition para Desarrollo C# en Windows
- Control de Flujo en C#: IF, SWITCH, FOR, WHILE – Ejemplos Prácticos y Explicaciones
- Desarrollo con Windows Forms en C#: Tutorial Práctico Paso a Paso
- Los 10 Mejores IDEs para C# en Windows, macOS y Linux – Reseña 2021
- La guía definitiva de los mejores IDEs para C en Windows, macOS y Linux (2021)
- Domina la programación en C: Tutorial completo en PDF para principiantes