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.
















