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.

  • ๐Ÿš€ Inicie la consola correcta: Abra PowerShell o PowerShell ISE desde el menรบ Inicio y ejecรบtelo como administrador cuando necesite privilegios elevados.
  • ๐Ÿงฉ Utilice cmdlets, no comandos de texto: Los cmdlets siguen un patrรณn de nomenclatura verbo-sustantivo y devuelven objetos .NET, por lo que la salida puede fluir hacia el siguiente cmdlet a travรฉs de una canalizaciรณn.
  • ๐Ÿ” Establezca la polรญtica de ejecuciรณn con cuidado: Utilice Set-ExecutionPolicy con RemoteSigned para equilibrar la seguridad y la comodidad al ejecutar scripts .ps1.
  • ๐Ÿ“ Escriba scripts .ps1 reutilizables: Combine cmdlets, variables y canalizaciones en un archivo de texto con la extensiรณn .ps1 para automatizar tareas administrativas repetitivas.
  • ๐Ÿค– Combina PowerShell con la IA: Los asistentes de IA convierten las solicitudes en lenguaje sencillo en scripts de PowerShell listos para ejecutar y explican los cmdlets desconocidos lรญnea por lรญnea.

Tutorial de Powershell para principiantes

ยฟ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.

Inicie PowerShell

Paso 2) Se abre la ventana de PowerShell.

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

cmdlet Obtener-Ayuda

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

Cmdlet 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*"

cmdlet Obtener-Servicio

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

cmdlet 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:

Salida de nuevo elemento

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.

Tipos de datos de PowerShell

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โ€.

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.

Ejecutar PowerShell como administrador

Paso 2) Ejecuta los siguientes comandos.

  1. Get-ExecutionPolicy
  2. Set-ExecutionPolicy Unrestricted
  3. entrar: Y en la solicitud de confirmaciรณn.
  4. Get-ExecutionPolicy

Polรญtica de ejecuciรณn de cambios

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.

Guardar FirstScript.ps1

En PowerShell, ejecute el script con:

& "X:\FirstScript.ps1"

Ejecutar 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.

ISE de PowerShell

Recrea el script anterior en ISE:

  1. Pega el cรณdigo en el editor.
  2. Guarda el script.
  3. Pulsa F5 para ejecutarlo.
  4. Observe la salida en el panel de la consola.

Ejecutar script en ISE

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

Script de memoria virtual gratuito

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.

Preguntas Frecuentes

PowerShell automatiza Windows Administraciรณn de sistemas: gestiรณn de servicios, archivos, usuarios y servidores, mediante una lรญnea de comandos orientada a objetos y un lenguaje de scripting basado en el framework .NET.

Un cmdlet es un objeto de clase .NET ligero que utiliza un nombre compuesto por verbo y sustantivo y devuelve objetos. Un comando tradicional en otros intรฉrpretes de comandos genera texto plano y se encarga de su propio anรกlisis y formato.

PowerShell trabaja con objetos y admite cmdlets, scripts e integraciรณn profunda con .NET. El Sรญmbolo del sistema es un intรฉrprete de comandos bรกsico basado en texto cuyos comandos generan texto sin formato en lugar de objetos.

Un archivo .ps1 es un script de PowerShell: un archivo de texto que contiene uno o mรกs comandos de PowerShell. Por defecto, no se puede ejecutar haciendo doble clic; se ejecuta desde la consola o con la opciรณn "Ejecutar con PowerShell".

Abra PowerShell como administrador y ejecute Set-ExecutionPolicy con un valor como RemoteSigned o Unrestricted; luego, confirme. Use Get-ExecutionPolicy para comprobar la configuraciรณn actual.

El Entorno de Scripting Integrado (ISE) es el editor grรกfico integrado de PowerShell para escribir, ejecutar, probar y depurar scripts, con resaltado de sintaxis, autocompletado mediante la tecla Tab y mรบltiples pestaรฑas de scripts.

Los asistentes de IA sugieren cmdlets, explican el comportamiento de los scripts y detectan errores mientras escribes. Ayudan a los administradores a automatizar tareas mรกs rรกpidamente y a convertir solicitudes en lenguaje natural en comandos de PowerShell funcionales.

Sรญ. Los asistentes de cรณdigo de IA generan scripts completos de PowerShell a partir de una descripciรณn en lenguaje sencillo, como "listar todos los servicios detenidos y reiniciarlos", y explican cada cmdlet para que puedas revisarlo antes de ejecutarlo.

Resumir este post con: