Tutorial de Powershell para principiantes
⚡ Resumen inteligente
PowerShell Scripting es un motor de automatización orientado a objetos construido sobre el marco .NET. Combina cmdlets, scripts y un lenguaje de scripting para ayudar a los administradores de TI a automatizar WindowsAdministre servicios y conecte máquinas remotas desde una única línea de comandos.

¿Qué es PowerShell?
Windows PowerShell es un motor de automatización orientado a objetos y un lenguaje de scripting. Está diseñado para profesionales de TI y administradores de sistemas que necesitan controlar y automatizar la administración de Windows y otras aplicaciones. PowerShell amplía los conceptos aprendidos en Windows símbolo del sistema y Windows Host de scripts con nuevos objetos, cmdlets y una potente canalización.
Combina la flexibilidad de la programación, la velocidad de la línea de comandos y la profundidad de una herramienta de administración con interfaz gráfica. Con ella, los administradores pueden resolver problemas de forma eficiente y ahorrar horas de trabajo manual. Este tutorial explica los aspectos esenciales que necesitas para aprender PowerShell desde cero.
¿Por qué usar PowerShell?
Las razones más importantes para usar PowerShell son:
- Ofrece una experiencia de línea de comandos bien integrada para el sistema operativo.
- Proporciona acceso completo a todos los tipos del framework .NET.
- Con la confianza de los administradores de sistemas en todas las empresas.
- Permite manipular componentes de servidores y estaciones de trabajo con tan solo unas pocas líneas de código.
- Diseñado para administradores de sistemas con una sintaxis clara de verbo-sustantivo.
- Más seguro que correr VBScript o otros lenguajes de scripting heredados.
Historial de PowerShell
PowerShell 1.0 se lanzó por primera vez en 2006. Actualmente, PowerShell está en la versión 7.2 y posteriores. Con cada nueva versión, sus capacidades y entornos de alojamiento crecieron significativamente.
Historial de versiones de PowerShell:
- PowerShell 1.0 — apoyó la administración local de Windows 2003 Server.
- PowerShell 2.0 — integrado con Windows 7 y Windows Servidor 2008 R2. Se añadieron funciones de acceso remoto, transacciones, trabajos en segundo plano, eventos y depuración.
- PowerShell 3.0 — enviado con Windows 8 y Windows Servidor 2012 como parte del Windows Marco de gestión. Se añadieron tareas programadas, conectividad de sesión y carga automática de módulos.
- PowerShell 4.0 — enviado con Windows 8.1 y Windows Server 2012 R2. Se agregó la configuración de estado deseado, la depuración mejorada y el diagnóstico de red.
- PowerShell 5.0 — parte de Windows Marco de administración 5. Se agregaron depuración remota, definiciones de clases y enumeraciones .NET.
- PowerShell 7.2 — Desarrollado con .NET 6.0. Añade nuevos operadores, vistas de error dinámicas y notificaciones automáticas de versión.
Características de PowerShell
- Acceso remoto mediante PowerShell: ejecutar scripts y cmdlets en una máquina remota.
- Trabajos de fondo: Ejecutar scripts o flujos de trabajo de forma asíncrona en la máquina local o en varias máquinas remotas.
- Actas: Permitir que los cmdlets y los desarrolladores realicen operaciones agrupadas que se puedan confirmar o revertir conjuntamente.
- Concurso completo: Escuchar, transmitir y actuar en función de los eventos del sistema y de la gestión.
- Transferencia de archivos de red: Compatibilidad nativa con la transferencia de archivos priorizada, asíncrona y con velocidad limitada entre máquinas mediante el Servicio de Transferencia Inteligente en Segundo Plano (BITS).
Cómo iniciar PowerShell
PowerShell viene preinstalado en todas las versiones recientes de Windows. Inícialo de la siguiente manera.
Paso 1) Busque PowerShell en WindowsLuego, selecciónelo y haga clic en él.
Paso 2) Se abre la ventana de PowerShell.
Cmdlet frente a comando
A cmdlet (pronunciado “command-let”) es un comando ligero que se utiliza en el entorno de PowerShell. PowerShell invoca cmdlets en la línea de comandos, y puedes crear los tuyos propios utilizando las API de PowerShell. Los cmdlets se diferencian de los comandos de shell tradicionales de las siguientes maneras:
- Los cmdlets son . NET Framework objetos de clase; no pueden ejecutarse como ejecutables independientes.
- Los cmdlets se pueden escribir con tan solo una docena de líneas de código.
- El análisis sintáctico, el formato de salida y la presentación de errores son gestionados por el entorno de ejecución, no por el cmdlet en sí.
- Los cmdlets trabajan con objetos, por lo que tanto los flujos de texto como los objetos pueden circular a través de las canalizaciones.
- Los cmdlets se basan en registros y procesan un solo objeto a la vez.
La mayor parte de la funcionalidad de PowerShell se proporciona a través de cmdlets, que siempre utilizan un patrón de nomenclatura verbo-sustantivo (siempre singular). Los cmdlets devuelven objetos, no texto. guión — distinto de un cmdlet — es una serie de comandos almacenados en un archivo de texto con el .ps1 extensión.
Algunos verbos comunes que utilizarás para aprender PowerShell son:
- Obtén — recuperar algo.
- Comenzar — haz algo.
- Oct — generar algo.
- Parada — detener algo que está en marcha.
- Establecer — define algo.
- New — crea algo.
Comandos importantes de PowerShell
Consigue ayuda: Consulta la ayuda sobre comandos y temas de PowerShell.
Ejemplo: mostrar ayuda para el Format-Table mando.
Get-Help Format-Table
Obtener comando: Obtén información sobre cualquier cosa que pueda ser invocada.
Ejemplo: generar una lista de cmdlets y funciones instaladas en la máquina.
Get-Command
Obtener servicio: Encuentra todos los servicios en la máquina.
Ejemplo: obtener todos los servicios cuyo nombre comience con “vm”.
Get-Service "vm*"
Obtener miembro: muestra qué se puede hacer con un objeto.
Ejemplo: listar los miembros de los servicios de la máquina virtual devueltos por Get-Service.
Get-Service "vm*" | Get-Member
Otros cmdlets útiles:
Get-Module— muestra los paquetes de comandos instalados.Get-Content— leer un archivo y procesar su contenido.Get-*comodín: lista todos los cmdlets que comienzan con “Get-”.
Ejemplo: crear una carpeta.
New-Item -Path 'X:\Guru99' -ItemType Directory
Salida:
Tipos de datos de PowerShell
PowerShell admite los tipos de datos estándar de .NET, por lo que puede almacenar cualquier valor de forma limpia en una variable.
Variables especiales
PowerShell expone una serie de variables especiales integradas. Las más útiles se enumeran a continuación.
| Variable especial | Mareas Ideales para Lecciones |
|---|---|
| $Error | Una matriz de objetos de error que representan los errores más recientes. |
| $anfitrión | Muestra el nombre de la aplicación anfitriona actual. |
| $Perfil | Almacena la ruta completa del perfil de usuario para el intérprete de comandos predeterminado. |
| $ PID | Almacena el identificador del proceso. |
| $PSUICultura | Contiene el nombre de la cultura de interfaz de usuario actual. |
| $NULO | Contiene un valor vacío o nulo. |
| $falso | Contiene el valor booleano FALSO. |
| $Verdadero | Contiene el valor booleano VERDADERO. |
Scripts de PowerShell
Los scripts de PowerShell se almacenan en .ps1 archivos. Por defecto, no puede ejecutar un script haciendo doble clic en él; esta medida de seguridad protege el sistema de daños accidentales. Para ejecutar un script, haga clic con el botón derecho en él y elija “Ejecutar con PowerShell”.
Una política de ejecución controla qué scripts tienen permiso para ejecutarse. Vea la política actual con Get-ExecutionPolicyLos valores posibles incluyen:
- Restringido — No se permiten scripts. Esta es la configuración predeterminada.
- TodosFirmados — Solo se ejecutan los scripts firmados por un desarrollador de confianza, y cada uno requiere confirmación.
- RemoteSigned — Ejecuta tus propios scripts, además de scripts firmados de fuentes confiables.
- Irrestricto — cualquier script puede ejecutarse (úselo con moderación).
Pasos para cambiar la política de ejecución:
Paso 1) Abra una ventana de PowerShell con privilegios elevados haciendo clic con el botón derecho en PowerShell y seleccionando Ejecutar como administrador.
Paso 2) Ejecuta los siguientes comandos.
Get-ExecutionPolicySet-ExecutionPolicy Unrestricted- entrar:
Yen la solicitud de confirmación. Get-ExecutionPolicy
Primer script de PowerShell
Abre el Bloc de notas y escribe:
Write-Host "Hello, Guru99!"
Guarde el archivo con un .ps1 extensión — por ejemplo, FirstScript.ps1.
En PowerShell, ejecute el script con:
& "X:\FirstScript.ps1"
¿Qué es PowerShell ISE?
El Windows Entorno de scripting integrado de PowerShell (ISE) ISE es el editor predeterminado de PowerShell. En ISE, puedes ejecutar comandos, escribir pruebas y depurar scripts en un entorno gráfico basado en ventanas. Admite edición multilínea, resaltado de sintaxis, autocompletado, ejecución selectiva y mucho más.
PowerShell ISE también ofrece un panel de consola que ejecuta comandos directamente, mientras que los paneles laterales muestran el código fuente de los scripts y las herramientas conectadas a ISE. Se pueden abrir varias ventanas de scripts a la vez, lo cual resulta útil para depurar scripts que dependen de funciones definidas en otros scripts o módulos.
Recrea el script anterior en ISE:
- Pega el código en el editor.
- Guarda el script.
- Pulsa F5 para ejecutarlo.
- Observe la salida en el panel de la consola.
Muestra 2: El siguiente script muestra contenido gratuito. memoria virtual en la maquina.
Get-WmiObject -Class Win32_OperatingSystem -ComputerName localhost |
Select-Object -Property CSName, FreeVirtualMemory
PowerShell Concepts
Los siguientes conceptos conforman el vocabulario del trabajo diario con PowerShell.
| Concepto | Mareas Ideales para Lecciones |
|---|---|
| cmdlets | Comandos integrados escritos en lenguajes .NET como VB o C#. Los desarrolladores amplían el conjunto cargando o escribiendo complementos de PowerShell. |
| Funciones | Comandos escritos en el propio lenguaje PowerShell, sin necesidad de un IDE como Visual Studio. |
| Scripts | Archivos de texto en el disco con el .ps1 extensión. |
| Aplicaciones | Ya eres Windows programas invocados desde la consola. |
| Y si | Indica al cmdlet que no se ejecute, sino que describa lo que sucedería si lo hiciera. |
| Confirmar | Indica al cmdlet que solicite confirmación antes de ejecutarse. |
| Verboso | Proporciona un mayor nivel de detalle operativo. |
| Depurar | Indica al cmdlet que emita información de depuración. |
| ErrorAcción | Define qué hace el cmdlet en caso de error. Valores permitidos: continue, stop, silentlycontinue, inquire. |
| variable de error | Indica el nombre de la variable que contiene la información de error. |
| FueraVariable | Indica al cmdlet que almacene su resultado en una variable específica. |
| OctBuffer | Retiene un número específico de objetos antes de enviarlos a través del proceso. |
Ventajas de usar scripts de PowerShell
- Los scripts de PowerShell son potentes y concisos: puedes lograr mucho con tan solo unas pocas líneas.
- Las variables se declaran con el
$<variable>sintaxis. - Las variables pueden almacenar la salida de comandos, objetos y valores primitivos.
- No es necesario especificar explícitamente el tipo de variable.
PowerShell frente al símbolo del sistema
| PowerShell | Símbolo del sistema |
|---|---|
| Profundamente integrado con WindowsOfrece una interfaz de línea de comandos interactiva y un lenguaje de scripting completo. | Interfaz de línea de comandos predeterminada proporcionada por MicrosoftUna sencilla aplicación Win32 que se comunica con otros objetos Win32. |
| Utiliza cmdlets que se pueden invocar de forma interactiva o mediante scripts de automatización. | No hay cmdlets. |
| Trata la salida como objetos para que pueda fluir hacia otro cmdlet a través de la canalización. | La salida es un flujo de texto plano, no objetos. |
| Avanzado en características, capacidades y arquitectura interna. | Interfaz básica, adecuada para tareas por lotes heredadas. |
Aplicaciones de PowerShell
PowerShell se ha convertido en la opción estándar para los administradores de TI porque reduce drásticamente el esfuerzo en grandes redes corporativas. Imagínese administrar más de cuatrocientos servidores e implementar una nueva solución de seguridad que depende de un servicio específico que se ejecuta en cada host.
Iniciar sesión manualmente en cada servidor es lento y propenso a errores. Un único script de PowerShell puede analizar todos los servidores en minutos, informar qué hosts ya ejecutan el servicio e incluso habilitarlo en el resto. El script captura la intención una sola vez y la aplica de forma fiable en toda la infraestructura.
















