M365Con 2027 – conferencia online gratuita · 11–22 Jan 2027 · 120 sessions→ m365con.net

Blog · Mirko Peters

PowerShell para Microsoft 365: guía completa de automatización

By · · Updated

Aprende a usar PowerShell en Microsoft 365 para administración, automatización, resolución de problemas, informes, seguridad y operaciones repetibles.

Automatically translated with AI from the original post. Read the English original

Cover: Microsoft AI Agent Harness - Simply Explained

Esta guía te ofrece todo lo necesario para dominar PowerShell, tanto si nunca has escrito un script como si llevas años administrando servidores. Encontrarás pasos claros para instalar PowerShell en cualquier sistema operativo, ejecutar tus primeros comandos y entender la forma particular en que este shell maneja los datos y la automatización. Profundizaremos en scripting avanzado, buenas prácticas de seguridad e integración con los servicios de nube de Microsoft, como Azure y Microsoft 365. A lo largo del texto encontrarás consejos prácticos, aportaciones de la comunidad y las novedades sobre la evolución de PowerShell hacia el código abierto y el soporte multiplataforma. Mantente al día y con confianza mientras dominas la evolución de PowerShell y su papel en la TI moderna.

Primeros pasos con PowerShell

Antes de empezar a administrar sistemas o automatizar tareas, conviene preparar PowerShell y familiarizarte con su funcionamiento. Esta sección te ayuda a instalarlo en tu equipo, tanto si usas Windows, Linux o macOS, y te muestra cómo abrirlo y ejecutar tus primeros comandos. Se trata de sentar una base sólida para todo lo que viene después. Además, verás qué hace a PowerShell diferente de otros shells y cómo su sintaxis clara y predecible te prepara para tener éxito. Vamos a ver lo fácil que es empezar a trabajar con él.

Cómo instalar PowerShell en Windows, Linux y macOS

Inicio de PowerShell y ejecución de comandos básicos

Versiones de PowerShell y su evolución explicadas

PowerShell ha pasado por una transformación importante a lo largo de los años. Desde sus orígenes como herramienta exclusiva de Windows, se ha convertido en un shell multiplataforma que funciona igual de bien en Linux que en los servidores Windows. Esta sección repasa los hitos principales de PowerShell, las diferencias entre versiones y lo que significa cada actualización para tus scripts y tu trabajo diario. Verás cómo elegir la versión adecuada, cómo mantener la seguridad y la compatibilidad, y qué esperar al pasar de Windows PowerShell clásico a las versiones más recientes, como PowerShell 7.

Versiones de PowerShell e historial de lanzamientos

Cómo actualizar PowerShell y pasar de Windows PowerShell a PowerShell 7

Conceptos básicos de PowerShell: cmdlets, pipeline y sintaxis

PowerShell no es como el típico shell o el símbolo del sistema: tiene mucha potencia por debajo. Esta sección analiza los elementos básicos de PowerShell: cmdlets, el canal (pipeline) y su estilo de lenguaje legible. Entender estos conceptos es clave si quieres automatizar de forma eficiente, solucionar problemas con seguridad y aprovechar de verdad la capacidad de PowerShell. Cuando te familiarices con la lógica basada en objetos y con los patrones predecibles de los verbos de comando, verás que escribir scripts y administrar sistemas resulta mucho más fluido. Todo lo que viene a continuación sienta una base sólida para automatizaciones más complejas y escenarios más avanzados.

Dominar los cmdlets de PowerShell y la estructura de los comandos

Los cmdlets de PowerShell son comandos especializados, creados con .NET y diseñados para la administración de sistemas. A diferencia de los comandos tradicionales de shell, se estructuran con una convención de nombres Verbo-Sustantivo (por ejemplo, Get-Process o Set-Service). Esto ayuda a saber claramente qué hace cada comando, reduce las conjeturas y facilita el descubrimiento de funciones.

Los cmdlets aceptan parámetros con nombre, lo que permite un control preciso de su comportamiento. Por ejemplo, Get-Process -Name "notepad" obtiene información sobre el proceso del Bloc de notas. Los parámetros de tipo switch (indicadores) funcionan como interruptores. Cada cmdlet puede recibir entrada por el canal, generando o consumiendo objetos para su posterior procesamiento o filtrado.

A diferencia de los comandos heredados, que trabajan con texto plano, los cmdlets operan con objetos estructurados. Esto significa que la salida se mantiene rica y organizada, lo que facilita ordenarla, filtrarla o pasarla entre comandos. Es un gran salto para manejar automatizaciones complejas.

Puedes encontrar los cmdlets disponibles con Get-Command o consultar los detalles específicos con Get-Help. Los cmdlets son el núcleo de la potencia administrativa de PowerShell, y permiten realizar desde operaciones con archivos hasta la administración de Active Directory, todo con una sintaxis coherente y clara.

Entender el canal (pipeline) de PowerShell y el procesamiento basado en objetos

El canal de PowerShell es una característica fundamental que lo diferencia de los shells tradicionales. En PowerShell, los datos se pasan entre comandos como objetos, no solo como texto, mediante el carácter de canalización (|). Esto significa que puedes filtrar, ordenar y modificar datos ricos a lo largo del canal sin perder el contexto ni el formato.

Por ejemplo, Get-Process | Where-Object {$_.CPU -gt 100} toma la salida de Get-Process y la filtra para mostrar solo los procesos con un uso de CPU superior a 100. Cada paso trabaja con objetos de .NET, lo que permite manipulaciones avanzadas y seleccionar propiedades concretas.

Otros shells, como Bash o CMD, pasan texto plano a través de los canales. Con objetos, PowerShell permite una inspección y una manipulación más profundas, algo útil para tareas de TI que requieren precisión y flexibilidad. Este modelo también permite scripts claros y concisos, sobre todo para administrar almacenes de datos como el sistema de archivos, el registro o las API remotas.

Este enfoque abre la puerta a la automatización: puedes encadenar comandos, transformar la salida o incluso canalizarla hacia tus propios scripts o funciones. Cuando te acostumbras a pensar en objetos y no solo en cadenas de texto, las tareas complejas se vuelven mucho más manejables.

Gramática y fundamentos de sintaxis de PowerShell

PowerShell usa una gramática coherente y lógica que reduce los errores y facilita la lectura de los scripts. Los comandos siguen una estructura predecible: Verbo-Sustantivo [-Parámetro1 valor1] [-Parámetro2 valor2], lo que deja claro qué ocurre en cada línea.

Las instrucciones en PowerShell no sirven solo para la línea de comandos; también forman la base de los scripts. Usarás variables (como $miVar), operadores (-eq, -gt, etc.) y estructuras de control sencillas, como if, foreach y switch, para crear flujos lógicos.

PowerShell no distingue entre mayúsculas y minúsculas, así que la capitalización es flexible. Los archivos de script usan la extensión .ps1, y cada línea puede ser una instrucción completa o parte de un bloque más grande, con llaves { } para agrupar código.

Su gramática toma elementos de los shells de UNIX y de los scripts de Windows, pero está diseñada para ser clara y fácil de usar. Esto significa menos caracteres crípticos, mensajes de error más amigables y curvas de aprendizaje más cortas. Dominar los fundamentos de la gramática ayuda a evitar los tropiezos habituales en scripting y permite una automatización limpia y fiable desde el principio.

Scripting y automatización con PowerShell

Una vez que domines los comandos básicos, la scripting es donde empiezas a multiplicar tus esfuerzos. Esta sección trata sobre cómo tomar lo que ya sabes y convertirlo en algo repetible. Aprenderás a organizar la automatización con scripts, a escribir código limpio en funciones y módulos, y a trabajar con variables para lograr soluciones más dinámicas. Por el camino verás la importancia de la seguridad, la modularidad y el intercambio de código, elementos esenciales tanto si automatizas tu propio equipo como si desarrollas herramientas para una empresa. El scripting de PowerShell hace que las tareas rutinarias sean muy sencillas y acelera incluso la administración de sistemas más compleja.

Fundamentos de scripts de PowerShell y extensiones de nombre de archivo

Un script de PowerShell es simplemente un archivo de texto guardado con la extensión .ps1. Esto indica al sistema (y a ti) que contiene comandos y lógica de PowerShell. Los scripts pueden incluir comandos individuales, funciones reutilizables, bifurcaciones lógicas, bucles y mucho más.

Para ejecutar un script, debes tener en cuenta las directivas de ejecución, es decir, la forma en que PowerShell controla qué se puede ejecutar por motivos de seguridad. De forma predeterminada, solo pueden ejecutarse los scripts firmados o los escritos localmente, según tu directiva. Modifícalas con Set-ExecutionPolicy según sea necesario, equilibrando la comodidad con la seguridad. Usa RemoteSigned o AllSigned para reforzar la seguridad, especialmente en sistemas compartidos o de producción.

Ejecuta los scripts desde la consola con .\script.ps1 (desde el directorio actual) o especificando la ruta completa. Presta mucha atención a las rutas y los permisos: los scripts ubicados en carpetas del sistema pueden requerir elevación (privilegios de administrador). Valida y prueba siempre los scripts nuevos antes de ejecutarlos en entornos de producción para detectar errores a tiempo.

Seguir las convenciones de nombres de archivo y de ejecución ayuda a mantener un flujo de trabajo seguro y eficiente, y te prepara para abordar con seguridad automatizaciones más avanzadas.

Código reutilizable en PowerShell: funciones y módulos

Las funciones en PowerShell te permiten empaquetar bloques de código para reutilizarlos, lo que simplifica los scripts y reduce la repetición. Define una función con la palabra clave function y llámala por su nombre en tus scripts. Las funciones avanzadas admiten parámetros, entrada desde la canalización y mensajes de ayuda detallados, lo que aporta estructura y claridad a los proyectos de automatización más grandes.

Los módulos son colecciones de funciones, cmdlets y otros recursos de PowerShell agrupados para compartirlos y reutilizarlos. Guarda tus funciones en un archivo .psm1 e impórtalas con Import-Module. Este enfoque es clave cuando gestionas bases de código más extensas o herramientas desarrolladas en equipo, ya que permite que todos se beneficien de scripts probados y estandarizados.

Los módulos pueden publicarse en PowerShell Gallery para uso público, o almacenarse en repositorios locales. Esto facilita el intercambio de código, el control de versiones y la portabilidad: se acabó copiar y pegar funciones entre equipos. Usar funciones y módulos es una buena práctica para mantener tus scripts organizados, mantenibles y más fáciles de actualizar a medida que cambian las necesidades.

En resumen, el código reutilizable es la base de una automatización escalable, que te permite crear una vez y usar en todas partes.

Variables, matrices y tablas hash en PowerShell

Las variables en PowerShell almacenan datos para su uso posterior y se crean anteponiendo un $ al nombre (por ejemplo, $userName). Pueden contener cualquier tipo de datos, incluidos cadenas, números, objetos, matrices o incluso estructuras complejas. Las usas para que tus scripts sean dinámicos y adaptables.

Las matrices agrupan varios valores en una sola variable y se crean con $myArray = 1, 2, 3. Puedes recorrer estos valores en un bucle o acceder a ellos por índice. Esto simplifica mucho el manejo de listas de archivos, usuarios o configuraciones.

Las tablas hash son pares clave-valor (piensa en ellas como "diccionarios") que se declaran con @{ Key1 = 'Value1'; Key2 = 'Value2' }. Son ideales para almacenar datos asociados, como pares de nombre de usuario y contraseña o conjuntos de configuración, y se usan ampliamente en objetos personalizados y procesamiento de datos.

Dominar estas estructuras de datos es fundamental para crear scripts potentes. Podrás recopilar datos introducidos por el usuario, procesar archivos y organizar la información con fluidez, algo esencial al crear automatizaciones que deben tomar decisiones o manejar grandes volúmenes de datos.

Seguridad en PowerShell: buenas prácticas y técnicas de endurecimiento

La seguridad es lo primero en cualquier implementación seria de PowerShell. Esta sección explica cómo proteger tus sistemas y scripts frente a un uso no previsto o malicioso. Descubrirás tácticas para restringir la ejecución de scripts, firmar tu código para generar confianza y supervisar la actividad en busca de comportamientos sospechosos. Aprender estas estrategias ayuda a evitar que PowerShell se convierta en un vector de ataque, algo crucial para cualquier empresa, sobre todo con el aumento de los riesgos cibernéticos. Reforzar tus defensas desde ahora significa menos problemas en el futuro y una automatización más segura y fiable para todos los implicados.

Protección de la ejecución de PowerShell y firma de scripts

Las directivas de ejecución determinan qué scripts pueden ejecutarse en tu sistema. PowerShell admite varios modos de directiva: Restricted (no se ejecuta ningún script), RemoteSigned (los scripts creados localmente se ejecutan, mientras que los remotos deben estar firmados), AllSigned (todos los scripts requieren firma) y Unrestricted (se ejecutan todos los scripts, con advertencia para los remotos). Configura tu directiva con Set-ExecutionPolicy. En entornos empresariales, RemoteSigned o AllSigned ofrecen un buen equilibrio entre flexibilidad y seguridad.

La firma de scripts garantiza que los scripts proceden de un origen de confianza y que no han sido manipulados. Usa un certificado de firma de código, preferiblemente emitido por una entidad de certificación (CA) de confianza, interna o externa, para firmar tus scripts con Set-AuthenticodeSignature. Cuando la firma de un script no coincide, PowerShell muestra una advertencia o bloquea la ejecución, lo que añade una capa de defensa fundamental.

Ten en cuenta que las directivas de ejecución se aplican por usuario y pueden eludirse, así que considéralas solo una capa de tu defensa. Verifica siempre la confianza en el editor, mantén actualizados los certificados de firma y revisa periódicamente la configuración de directivas en todos los sistemas, utilizando directivas de grupo para aplicarlas en toda la organización. Estos pasos dificultan considerablemente que atacantes o usuarios no autorizados introduzcan automatización maliciosa mediante PowerShell.

Al implementar controles de ejecución estrictos y firmar los scripts de forma rigurosa, reduces de manera notable el riesgo y garantizas la integridad de los scripts, algo absolutamente esencial en organizaciones reguladas o sensibles desde el punto de vista de la seguridad.

Modo de lenguaje restringido y reducción de la superficie de ataque

El modo de lenguaje restringido es un modo de funcionamiento especial de PowerShell que limita las características del lenguaje disponibles, lo que dificulta mucho utilizar PowerShell con fines maliciosos. Cuando está habilitado, restringe el acceso a las API críticas de .NET, impide llamar a determinados componentes nativos y limita el código dinámico. Es ideal para escenarios de bloqueo o de quiosco.

Este modo se activa automáticamente mediante soluciones de seguridad como Windows Defender Application Control (WDAC) o Device Guard, y también puede configurarse mediante el registro en entornos muy estrictos. Permite la automatización de TI legítima, como los cmdlets básicos y los scripts estándar, mientras bloquea las técnicas de explotación que tanto gustan a los atacantes.

Reducir la superficie de ataque de PowerShell también implica mantener instaladas solo las versiones actuales y necesarias, deshabilitar la administración remota si no se necesita y usar reglas de control de aplicaciones para restringir qué binarios pueden ejecutar scripts. Combinar el modo de lenguaje restringido con una directiva de ejecución sólida y scripts firmados es una estrategia de defensa en profundidad muy eficaz para reforzar los sistemas empresariales.

Estas técnicas ayudan a lograr un equilibrio cuidadoso: conservas la potencia de automatización para los administradores, pero bloqueas la gran mayoría de usos maliciosos de PowerShell. Revisa periódicamente las líneas base de seguridad y utiliza las mejores prácticas más recientes de Microsoft para asegurarte de que tu configuración se ajusta a tu nivel de riesgo y a tus necesidades operativas.

Registro, supervisión y auditoría de la actividad de PowerShell

El ecosistema de PowerShell: herramientas, comunidad y perspectivas de futuro

PowerShell es mucho más que comandos y scripts: es un ecosistema en crecimiento, con herramientas diseñadas para cada etapa de tu camino de automatización. Esta sección presenta entornos de desarrollo mejorados, introduce comunidades clave de PowerShell y analiza lo que se avecina a medida que PowerShell crece en los ámbitos de la nube, el código abierto y la automatización. Tanto si buscas mejores herramientas, asesoramiento experto o oportunidades para contribuir, encontrarás vías para profundizar tus conocimientos y ayudar a dar forma al futuro de PowerShell, tanto para ti como para la comunidad en general.

Entorno de scripting integrado de PowerShell y alternativas modernas

Comunidad y gobernanza de PowerShell

El futuro de PowerShell: código abierto, multiplataforma e integración con la nube

La evolución de PowerShell está marcada por su paso al código abierto. Ahora se desarrolla en GitHub y tiene licencia MIT, lo que permite a la comunidad corregir errores, crear funciones y dar forma a la dirección del shell. Este enfoque colaborativo hace que PowerShell avance rápido y cuente con un respaldo más amplio que nunca.

El soporte multiplataforma es uno de los pilares de PowerShell moderno. PowerShell 7 se ejecuta en Windows, Linux y macOS, lo que hace que los scripts y la automatización sean portables entre los límites de la organización. Administradores y desarrolladores pueden desplegar la misma pila de automatización en el centro de datos, en máquinas virtuales de la nube o en aplicaciones en contenedores con cambios mínimos.

La integración con la nube es un foco principal del futuro de PowerShell. Las extensiones para Azure, AWS y Google Cloud te permiten gestionar recursos y automatizar la infraestructura en la nube, llevando la «infraestructura como código» a las operaciones diarias. PowerShell es ya un lenguaje nativo en muchos pipelines de CI/CD y herramientas DevOps, lo que impulsa ciclos de entrega de software rápidos y una gestión de infraestructura sin fisuras.

La hoja de ruta promete una automatización más profunda en Microsoft 365, controles de seguridad mejorados y scripts más inteligentes gracias a los conocimientos impulsados por IA. Para los profesionales de TI, el camino abierto y centrado en la nube de PowerShell garantiza que siga siendo esencial en los entornos empresariales modernos.

Fundamentos de diseño de PowerShell e integración con sistemas

Profundizar en los antecedentes técnicos de PowerShell te ayuda a entender por qué funciona como lo hace y cómo se conecta con prácticamente cualquier sistema con el que trabajes. Este apartado desglosa el enfoque único de PowerShell para gestionar objetos, su historia y sus principios rectores, y los fundamentos de la gestión de configuración en la TI moderna. Dominar estos elementos se traduce en scripts más eficaces, mejores integraciones y total confianza al trabajar con sistemas de Microsoft y de terceros.

Sistema extendido de tipos y modelo de objetos de PowerShell

El Extended Type System (ETS) es la forma en que PowerShell amplía el modelo de objetos estándar de .NET. Con ETS, los objetos de PowerShell pueden tener propiedades y métodos adicionales definidos en tiempo de ejecución, así como formato personalizado y conversiones de tipos. Esta flexibilidad permite que los cmdlets y los módulos adapten la salida a tus necesidades, sin modificar el código fuente subyacente.

ETS permite añadir «NoteProperties» (campos de datos personalizados) sobre la marcha, de modo que los resultados pueden enriquecerse con valores calculados o dinámicos. Los cmdlets Select-Object y Add-Member de PowerShell dependen de ETS para modificar los objetos a medida que pasan por los scripts o los pipelines.

¿El resultado? Una salida coherente y útil, sin importar qué tipo de sistema o fuente de datos estés automatizando, comparando o generando informes. ETS también respalda la integración de PowerShell con almacenes de datos como Windows Management Instrumentation (WMI), Active Directory y API externas.

Entender ETS te permite desarrollar scripts más avanzados. Puedes personalizar y procesar resultados de formas imposibles con una salida de texto simple, lo que facilita una automatización potente y fiable que se adapta a nuevos requisitos con el tiempo.

Antecedentes y filosofías de diseño de PowerShell

PowerShell fue concebido en Microsoft a principios de los 2000, liderado de forma notable por Jeffrey Snover. El objetivo inicial era ofrecer a los administradores un shell unificado y profundamente integrado para gestionar todo el ecosistema de Windows (servidores, equipos de escritorio y aplicaciones) con una única herramienta coherente.

Los principios de diseño de PowerShell apuestan por un lenguaje claro e intencionado, que prioriza la legibilidad y la previsibilidad frente a una sintaxis críptica. El formato Verbo-Sustantivo, el paso de objetos enriquecidos y el sistema de ayuda fácil de descubrir se diseñaron pensando en la legibilidad humana y en un control preciso.

El shell se creó como lenguaje de scripting y como shell de línea de comandos a la vez, lo que permite usarlo de forma interactiva y automatizar tareas de forma robusta con los mismos comandos. El diseño de PowerShell se apoya en las fortalezas de los shells de Unix, a la vez que se integra en profundidad con Windows mediante .NET, WMI y las API del sistema.

En última instancia, la filosofía de PowerShell consiste en empoderar a los usuarios para automatizar, gestionar y escalar la infraestructura de TI sin depender de herramientas especializadas interminables. Esta visión sigue impulsando la evolución de PowerShell hoy en día, especialmente en su apuesta por el código abierto, el multiplataforma y un futuro centrado en la nube.

Configuración de estado deseado para la gestión automatizada

La Configuración de estado deseado (DSC, Desired State Configuration) es una característica de PowerShell centrada en la administración declarativa. En lugar de escribir scripts de "cómo hacerlo" para configurar un sistema, describes el estado deseado —por ejemplo, las características instaladas, los archivos presentes, la configuración del Registro y el estado de los servicios—, y DSC aplica ese estado y lo mantiene a lo largo del tiempo.

DSC utiliza scripts de "configuración", que se compilan en archivos de formato de objeto de administración (MOF, Management Object Format) y se envían o se extraen de servidores o endpoints en la nube. Estos archivos funcionan como planos que impulsan la configuración automatizada de servidores, equipos de escritorio, máquinas virtuales en la nube y dispositivos IoT.

Se integra estrechamente con herramientas como System Center Configuration Manager (SCCM), Azure Automation y marcos de trabajo de terceros, lo que lo convierte en una pieza clave para la administración de infraestructura escalable, auditable y repetible. Además, la capacidad de DSC para supervisar e informar sobre el cumplimiento encaja a la perfección en entornos regulados o de alta seguridad.

Para los equipos de TI, DSC significa menos configuraciones "únicas" y una administración más predecible y con menos intervención manual. Con la ampliación del soporte multiplataforma, DSC es un elemento central en la transición hacia la infraestructura como código, y ayuda a los administradores a controlar de forma eficiente redes complejas, híbridas y centradas en la nube.

Ayuda y dominio de las aplicaciones de PowerShell

No tienes que aprender PowerShell por tu cuenta ni desde cero. Esta sección final te indica los mejores recursos de ayuda y las comunidades de aprendizaje, y muestra cómo el poder de PowerShell se extiende a la administración de una amplia gama de aplicaciones de Microsoft y de terceros. Tanto si estás solucionando problemas, mejorando procesos o escalando soluciones, encontrarás soporte y ejemplos prácticos para cada necesidad, lo que te permitirá dominar tanto el shell como sus numerosas aplicaciones reales.

Sistema de ayuda de PowerShell y recursos de aprendizaje

Administración de aplicaciones y del sistema con PowerShell


También te recomendamos escuchar

Si estás investigando PowerShell para Microsoft 365, estos episodios aportan contexto práctico sobre implementación, arquitectura, seguridad y gobernanza:

.NET Automation Microsoft 365 Microsoft GitHub

Related articles

RSS