PowerShell es un programa de shell desarrollado por Microsoft para la automatización de tareas y la administración de la configuración . Como es típico en un shell, proporciona un intérprete de línea de comandos para uso interactivo y un intérprete de scripts para automatización mediante un lenguaje definido para ello. Originalmente solo para Windows, conocido como Windows PowerShell , se convirtió en código abierto y multiplataforma el 18 de agosto de 2016 con la introducción de PowerShell Core . [ 5 ] El primero está basado en .NET Framework y el segundo en .NET (anteriormente .NET Core).
PowerShell viene incluido con las versiones actuales de Windows y se puede instalar en macOS y Linux . [ 5 ] Desde la compilación 14971 de Windows 10 , PowerShell reemplazó al Símbolo del sistema como el intérprete de comandos predeterminado expuesto por el Explorador de archivos . [ 6 ] [ 7 ]
En PowerShell, las tareas administrativas generalmente se realizan mediante cmdlets (pronunciado command-lets ), que son clases especializadas de .NET que implementan una operación particular. Estos funcionan accediendo a datos en diferentes almacenes de datos, como el sistema de archivos o el Registro de Windows , que se ponen a disposición de PowerShell a través de proveedores . Los desarrolladores externos pueden agregar cmdlets y proveedores a PowerShell. [ 8 ] [ 9 ] Los scripts pueden usar cmdlets, que a su vez pueden empaquetarse en módulos. Los cmdlets funcionan en conjunto con la API de .NET .
La compatibilidad de PowerShell con .NET Remoting , WS-Management , CIM y SSH permite a los administradores realizar tareas administrativas tanto en sistemas Windows locales como remotos. PowerShell también proporciona una API de alojamiento con la que el entorno de ejecución de PowerShell puede integrarse en otras aplicaciones. Estas aplicaciones pueden entonces usar la funcionalidad de PowerShell para implementar ciertas operaciones, incluidas las expuestas a través de la interfaz gráfica . Esta capacidad ha sido utilizada por Microsoft Exchange Server 2007 para exponer su funcionalidad de administración como cmdlets y proveedores de PowerShell e implementar las herramientas de administración gráfica como hosts de PowerShell que invocan los cmdlets necesarios. [ 8 ] [ 10 ] Otras aplicaciones de Microsoft, incluido Microsoft SQL Server 2008, también exponen su interfaz de administración a través de cmdlets de PowerShell. [ 11 ]
PowerShell incluye su propia ayuda extensa basada en consola (similar a las páginas man en los shells de Unix ) accesible a través del Get-Helpcmdlet. El contenido actualizado de la ayuda local se puede obtener de Internet a través del Update-Helpcmdlet. Alternativamente, se puede obtener ayuda de la web caso por caso a través del -onlinemodificador a Get-Help.
Fondo
Los programas de shell, incluido PowerShell, tienen su origen en los shells de sistemas operativos más antiguos , como MS-DOS y Xenix , que exponían la funcionalidad del sistema al usuario casi exclusivamente a través de una interfaz de línea de comandos (CLI) , aunque MS-DOS 5 también incluía un shell gráfico complementario de DOS . La familia Windows 9x venía con COMMAND.COM , el entorno de línea de comandos de MS-DOS. Sin embargo, las familias Windows NT y Windows CE incluían el más reciente cmd.exe , una mejora significativa con respecto a COMMAND.COM. Ambos entornos proporcionan CLI para comandos internos y externos, así como automatización mediante archivos por lotes , un lenguaje relativamente primitivo para la creación de scripts.
Para solucionar las limitaciones de estos shells , incluida la imposibilidad de usar directamente un componente de software expuesto a través de COM , Microsoft introdujo el Windows Script Host en 1998 con Windows 98 y su host basado en línea de comandos cscript.exe. Se integra con el motor Active Script y permite escribir scripts en lenguajes compatibles, como JScript y VBScript . Estos scripts pueden usar componentes COM directamente, pero su documentación es relativamente inaccesible y se ganó la reputación de ser un vector de vulnerabilidades del sistema después de que varios virus informáticos de alto perfil explotaran las debilidades en sus medidas de seguridad.
Las distintas versiones de Windows proporcionaban varios intérpretes de línea de comandos específicos (como netsh y WMIC ) con sus propios conjuntos de comandos, pero no eran interoperables. Windows Server 2003 intentó mejorar la experiencia de la línea de comandos, pero la compatibilidad con scripts seguía siendo insatisfactoria. [ 12 ]
Kermit

A finales de la década de 1990, Intel se acercó a Microsoft solicitando ayuda para convertir Windows, que se ejecutaba en procesadores Intel, en una plataforma más adecuada para el desarrollo de futuros procesadores Intel. En aquel entonces, el desarrollo de procesadores Intel se realizaba en computadoras Sun Microsystems que ejecutaban Solaris (una variante de Unix ) en procesadores con arquitectura RISC . La capacidad de ejecutar los numerosos scripts de automatización KornShell de Intel en Windows se identificó como una funcionalidad clave. Internamente, Microsoft comenzó un esfuerzo para crear una versión de Korn Shell para Windows, cuyo nombre en clave era Kermit. [ 13 ] Finalmente, Intel optó por una plataforma de desarrollo basada en Linux que pudiera ejecutarse en procesadores Intel, lo que hizo que el proyecto Kermit resultara redundante. Sin embargo, con un equipo totalmente financiado, el gerente de programa de Microsoft, Jeffrey Snover, se percató de la oportunidad de crear una solución más general para el problema de automatización administrativa de Microsoft.
Monada
Para 2002, Microsoft había comenzado a desarrollar un nuevo enfoque para la administración de la línea de comandos, incluyendo una CLI llamada Monad (también conocida como Microsoft Shell o MSH). Las ideas en las que se basaba fueron publicadas en agosto de 2002 en un documento técnico llamado "Manifiesto Monad" por su arquitecto jefe, Jeffrey Snover . [ 14 ] En una entrevista de 2017, Snover explica la génesis de PowerShell, diciendo que había estado intentando hacer que las herramientas de Unix estuvieran disponibles en Windows, lo cual no funcionó debido a " diferencias arquitectónicas fundamentales entre Windows y Linux ". Específicamente, señaló que Linux considera todo como un archivo de texto , mientras que Windows considera todo como una " API que devuelve datos estructurados". Eran fundamentalmente incompatibles, lo que lo llevó a adoptar un enfoque diferente. [ 15 ]
Monad se concibió como una nueva interfaz de línea de comandos (CLI) extensible con un diseño innovador, capaz de automatizar diversas tareas administrativas esenciales. Microsoft presentó Monad públicamente por primera vez en la Conferencia de Desarrollo Profesional celebrada en Los Ángeles en octubre de 2003. Unos meses después, lanzó una versión beta privada, que posteriormente derivó en una versión beta pública. Microsoft publicó la primera versión beta pública de Monad el 17 de junio de 2005, la Beta 2 el 11 de septiembre de 2005 y la Beta 3 el 10 de enero de 2006.
PowerShell

El 25 de abril de 2006, dos años y medio después del anuncio inicial de Monad, Microsoft anunció que Monad había sido renombrado como Windows PowerShell , posicionándolo como una parte importante de su oferta de tecnología de administración. [ 16 ] La versión candidata (RC) 1 de PowerShell se lanzó al mismo tiempo. Un aspecto significativo tanto del cambio de nombre como de la RC fue que ahora era un componente de Windows, en lugar de un simple complemento. La versión final 1.0 se incluyó como parte de Windows Vista.
La versión candidata 2 de PowerShell versión 1 se publicó el 26 de septiembre de 2006, con su lanzamiento final en la web el 14 de noviembre de 2006. PowerShell para versiones anteriores de Windows se publicó el 30 de enero de 2007. [ 17 ] El desarrollo de PowerShell v2.0 comenzó antes del lanzamiento de PowerShell v1.0. Durante el desarrollo, Microsoft publicó tres versiones preliminares de tecnología comunitaria (CTP) . Microsoft puso estas versiones a disposición del público. La última versión CTP de Windows PowerShell v2.0 se publicó en diciembre de 2008.
PowerShell v2.0 se completó y se lanzó para su fabricación en agosto de 2009, como parte integral de Windows 7 y Windows Server 2008 R2. Las versiones de PowerShell para Windows XP, Windows Server 2003, Windows Vista y Windows Server 2008 se lanzaron en octubre de 2009 y están disponibles para su descarga tanto para plataformas de 32 bits como de 64 bits. [ 18 ] En un número de octubre de 2009 de la revista TechNet , Microsoft afirmó que el dominio de PowerShell es "la habilidad más importante que un administrador de Windows necesitará en los próximos años". [ 19 ]
Windows 10 se lanzó con Pester, un conjunto de herramientas de validación de scripts para PowerShell. [ 20 ]

El 18 de agosto de 2016, Microsoft anunció [ 21 ] que había convertido PowerShell en código abierto y multiplataforma con soporte para Windows, macOS , CentOS y Ubuntu . [ 5 ] El código fuente se publicó en GitHub . [ 22 ] El cambio a código abierto creó una segunda encarnación de PowerShell llamada "PowerShell Core", que se ejecuta en .NET Core . Es distinta de "Windows PowerShell", que se ejecuta en el .NET Framework completo . [ 23 ] A partir de la versión 5.1, PowerShell Core se incluye con Windows Server 2016 Nano Server . [ 24 ] [ 25 ]
Pash
Un proyecto llamado Pash , un juego de palabras con el conocido intérprete de comandos Unix " bash ", ha sido una reimplementación de código abierto y multiplataforma de PowerShell a través del marco Mono . [ 26 ] Pash fue creado por Igor Moochnick, escrito en C# y publicado bajo la Licencia Pública General de GNU . El desarrollo de Pash se estancó en 2008, se reinició en GitHub en 2012, [ 27 ] y finalmente cesó en 2016 cuando PowerShell se convirtió oficialmente en código abierto y multiplataforma. [ 28 ]
Diseño
Filosofía
Un objetivo clave del diseño de PowerShell fue aprovechar la gran cantidad de API que ya existían en Windows, Windows Management Instrumentation (WMI), .NET Framework y otros programas. Los cmdlets de PowerShell generalmente encapsulan y exponen la funcionalidad existente en lugar de implementar funcionalidad nueva. La intención era proporcionar una interfaz más coherente y fácil de usar para los administradores, que los conectara con una amplia gama de funcionalidades subyacentes. Con PowerShell, un administrador no necesita conocer .NET, WMI ni la programación de API de bajo nivel, y puede centrarse en utilizar los cmdlets que expone PowerShell. En este sentido, PowerShell crea poca funcionalidad nueva, centrándose en hacer que la funcionalidad existente sea más accesible para un público específico. [ 29 ]
Gramática
Los desarrolladores de PowerShell basaron la gramática central de la herramienta en la de POSIX 1003.2 KornShell . [ 30 ]
Sin embargo, el lenguaje de PowerShell también estuvo influenciado por PHP , Perl y muchos otros lenguajes existentes. [ 31 ]
comandos con nombre
PowerShell puede ejecutar cuatro tipos de comandos con nombre: [ 32 ]
- cmdlets ( programas de .NET Framework diseñados para interactuar con PowerShell)
- Scripts de PowerShell (archivos con el sufijo
.ps1) - Funciones de PowerShell
- Programas ejecutables independientes
Si un comando es un programa ejecutable independiente, PowerShell lo inicia en un proceso separado ; si es un cmdlet, se ejecuta en el proceso de PowerShell. PowerShell proporciona una interfaz de línea de comandos interactiva , donde se pueden ingresar los comandos y visualizar su salida. La interfaz de usuario ofrece autocompletado personalizable mediante la tecla Tab . PowerShell permite la creación de alias para cmdlets, que PowerShell traduce textualmente en invocaciones de los comandos originales. PowerShell admite parámetros con nombre y posicionales para los comandos. Al ejecutar un cmdlet, PowerShell se encarga de vincular el valor del argumento al parámetro, pero para ejecutables externos, los argumentos son analizados por el ejecutable externo independientemente de la interpretación de PowerShell. [ 33 ]
Sistema de tipos extendido
El Sistema de Tipos Extendido ( ETS ) de PowerShell se basa en el sistema de tipos de .NET, pero con semántica extendida (por ejemplo, propertySets y extensibilidad de terceros). Por ejemplo, permite la creación de diferentes vistas de objetos al exponer solo un subconjunto de los campos de datos, propiedades y métodos, así como especificar un formato y un comportamiento de ordenación personalizados. Estas vistas se asignan al objeto original mediante archivos de configuración basados en XML . [ 34 ]
Cmdlets
Un cmdlet es una clase .NET que deriva de Cmdleto de PSCmdlet; esta última se usa cuando necesita interactuar con el entorno de ejecución de PowerShell. [ 35 ] Las clases base especifican métodos –BeginProcessing() , ProcessRecord()y EndProcessing()– que un cmdlet sobrescribe para proporcionar funcionalidad basada en los eventos que representan estas funciones. ProcessRecord()se llama si el objeto recibe entrada de canalización. [ 36 ] Si se canaliza una colección de objetos, el método se invoca para cada objeto en la colección. La clase cmdlet debe tener el atributoCmdletAttribute que especifica el verbo y el sustantivo que componen el nombre del cmdlet.
El nombre de un cmdlet sigue un patrón de nomenclatura Verbo-Sustantivo , como Get-ChildItem , lo que tiende a hacerlo autodocumentado . [ 35 ] Los verbos comunes se proporcionan como una enumeración . [ 37 ] [ 38 ]
Si un cmdlet recibe entrada de canalización o entrada de parámetros de línea de comandos, debe existir una propiedad correspondiente en la clase, con una implementación de mutador . PowerShell invoca el mutador con el valor del parámetro o la entrada de canalización, que la implementación del mutador guarda en variables de clase. Estos valores son luego referenciados por los métodos que implementan la funcionalidad. Las propiedades que se asignan a parámetros de línea de comandos están marcadas con ParameterAttribute[ 39 ] y se establecen antes de la llamada a BeginProcessing(). Aquellas que se asignan a entrada de canalización también están flanqueadas por ParameterAttribute, pero con el ValueFromPipelineparámetro de atributo establecido. [ 40 ]
Un cmdlet puede usar cualquier API de .NET y puede estar escrito en cualquier lenguaje de .NET . Además, PowerShell pone a disposición ciertas API, como , que se usa para acceder a la funcionalidad específica de PowerShell, como escribir objetos en la canalización. Un cmdlet puede usar una API de acceso a datos de .NET directamente o usar la infraestructura de PowerShell de proveedores , que hacen que los almacenes de datos sean direccionables usando rutas únicas . Los almacenes de datos se exponen usando letras de unidad , y las jerarquías dentro de ellos, direccionadas como directorios. PowerShell incluye proveedores para el sistema de archivos , el registro , el almacén de certificados , así como los espacios de nombres para alias de comandos, variables y funciones. [ 41 ] PowerShell también incluye varios cmdlets para administrar varios sistemas de Windows , incluido el sistema de archivos, o usar la Instrumental de administración de Windows para controlar componentes de Windows . Otras aplicaciones pueden registrar cmdlets con PowerShell, lo que le permite administrarlos, y, si incluyen algún almacén de datos (como una base de datos), también pueden agregar proveedores específicos.WriteObject()
Se puede agregar un cmdlet al intérprete de comandos mediante módulos o antes de los complementos v2. Los usuarios no están limitados a los cmdlets incluidos en la instalación básica de PowerShell.
Número de cmdlets incluidos en la instalación básica de PowerShell para distintas versiones:
Tubería
Para habilitar la semántica de canalización , similar a la canalización de Unix , un cmdlet recibe entrada y genera resultados como objetos. Si un cmdlet genera varios objetos, cada objeto de la colección pasa a través de la canalización antes de que se procese el siguiente. [ 35 ] Una canalización de PowerShell permite lógica compleja utilizando el operador de tubería ( ) para conectar etapas. Sin embargo, la canalización de PowerShell difiere de las canalizaciones de Unix en que las etapas se ejecutan dentro del entorno de ejecución de PowerShell en lugar de como un conjunto de procesos coordinados por el sistema operativo . Además, se pasan objetos .NET estructurados, en lugar de flujos de bytes , de una etapa a la siguiente. El uso de objetos y la ejecución de etapas dentro del entorno de ejecución de PowerShell elimina la necesidad de serializar estructuras de datos o extraerlas analizando explícitamente la salida de texto. [ 46 ] Un objeto también puede encapsular ciertas funciones que trabajan con los datos contenidos, que quedan disponibles para el comando receptor para su uso. [ 47 ] [ 48 ] Para el último cmdlet en una canalización, PowerShell canaliza automáticamente su objeto de salida al cmdlet, que transforma los objetos en un flujo de objetos de formato y luego los renderiza en la pantalla. [ 49 ] [ 50 ]|Out-Default
Dado que un objeto de PowerShell es un objeto .NET, posee un .ToString()método que se utiliza para serializar el estado del objeto. Además, PowerShell permite especificar definiciones de formato, de modo que la representación textual de los objetos se puede personalizar eligiendo qué elementos de datos mostrar y de qué manera. Sin embargo, para mantener la compatibilidad con versiones anteriores , si se utiliza un ejecutable externo en una canalización, este recibe un flujo de texto que representa el objeto, en lugar de integrarse directamente con el sistema de tipos de PowerShell. [ 51 ] [ 52 ] [ 53 ]
Programación de scripts
PowerShell incluye un lenguaje de tipado dinámico para scripting que puede implementar operaciones complejas usando cmdlets de forma imperativa . El lenguaje admite variables, funciones, ramificación ( if-then-else), bucles ( while, do, for, y foreach), manejo estructurado de errores/excepciones y cierres / expresiones lambda , [ 54 ] así como integración con .NET. Las variables en los scripts de PowerShell tienen el prefijo $. A las variables se les puede asignar cualquier valor, incluida la salida de los cmdlets. Las cadenas pueden estar encerradas entre comillas simples o dobles: cuando se usan comillas dobles, las variables se expandirán incluso si están dentro de las comillas. Encerrar la ruta a un archivo entre llaves precedidas por un signo de dólar (como en ${C:\foo.txt}), conocido como notación de variable de espacio de nombres, crea una referencia al contenido del archivo. Si se usa como un valor L , todo lo que se le asigne se escribirá en el archivo. Cuando se usa como un valor R , se leerá el contenido del archivo. Si se asigna un objeto, se serializa antes de almacenarse. [ 55 ]
Se puede acceder a los miembros de un objeto mediante .notación, como en la sintaxis de C#. PowerShell proporciona variables especiales, como $args, que es una matriz de todos los argumentos de la línea de comandos pasados a una función desde la línea de comandos, y $_, que se refiere al objeto actual en la canalización. [ 56 ] PowerShell también proporciona matrices y matrices asociativas . El lenguaje PowerShell también evalúa inmediatamente las expresiones aritméticas introducidas en la línea de comandos y analiza abreviaturas comunes, como GB, MB y KB. [ 57 ] [ 58 ]
Mediante la functionpalabra clave, PowerShell permite la creación de funciones. Una función simple tiene el siguiente aspecto general: [ 59 ]
nombre de la función ( [Tipo] $Param1 , [Tipo] $Param2 ) { # Instrucciones }Sin embargo, PowerShell permite funciones avanzadas que admiten parámetros con nombre, parámetros posicionales, parámetros de conmutación y parámetros dinámicos. [ 59 ]
función Verbo-Sustantivo {parámetro (# Definición de parámetros estáticos)parámetro dinámico {# Definición de parámetros dinámicos}comenzar {# Conjunto de instrucciones que se ejecutarán al inicio del pipeline.}proceso {# Conjuntos de instrucciones principales, ejecutados para cada elemento en la tubería.}fin {# Conjunto de instrucciones que se ejecutarán al final de la canalización.}}La función definida se invoca de cualquiera de las siguientes formas: [ 59 ]
nombre valor1 valor2 Verbo-Sustantivo -Parámetro1 valor1 -Parámetro2 valor2 PowerShell permite llamar a cualquier método estático de .NET proporcionando sus espacios de nombres entre corchetes ( []), y luego usando un par de dos puntos ( ::) para indicar el método estático. [ 60 ] Por ejemplo:
[Consola] :: WriteLine ( "PowerShell" )Hay docenas de maneras de crear objetos en PowerShell. Una vez creados, se puede acceder a las propiedades y métodos de instancia de un objeto usando la .notación. [ 60 ]
PowerShell acepta cadenas , tanto sin formato como con caracteres de escape . Una cadena entre comillas simples es una cadena sin formato, mientras que una cadena entre comillas dobles es una cadena con caracteres de escape. PowerShell trata las comillas rectas y curvas como equivalentes. [ 61 ]
PowerShell admite la siguiente lista de caracteres especiales: [ 62 ]
Para el manejo de errores, PowerShell proporciona un mecanismo de manejo de excepciones basado en .NET . En caso de errores, Exceptionse lanzan objetos que contienen información sobre el error (objeto), los cuales se capturan mediante la try ... catchconstrucción (aunque traptambién se admite una construcción). PowerShell se puede configurar para reanudar la ejecución silenciosamente, sin lanzar realmente la excepción; esto se puede hacer en un solo comando, una sola sesión o de forma continua. [ 63 ]
Los scripts escritos con PowerShell pueden persistir entre sesiones en un .ps1archivo o en .psm1otro (este último se usa para implementar un módulo). Posteriormente, se puede usar el script completo o funciones individuales del mismo. Los scripts y las funciones funcionan de forma análoga a los cmdlets, ya que pueden usarse como comandos en canalizaciones y se les pueden vincular parámetros. Los objetos de canalización se pueden pasar sin problemas entre funciones, scripts y cmdlets. Para evitar la ejecución involuntaria de scripts, la ejecución de scripts está deshabilitada de forma predeterminada y debe habilitarse explícitamente. [ 64 ] La habilitación de scripts puede realizarse a nivel de sistema, usuario o sesión. Los scripts de PowerShell se pueden firmar para verificar su integridad y están sujetos a la Seguridad de Acceso al Código . [ 65 ]
El lenguaje PowerShell admite la notación de prefijo binario similar a la notación científica que admiten muchos lenguajes de programación de la familia C. [ 66 ]
Alojamiento
También se puede usar PowerShell integrado en una aplicación de administración, que utiliza el entorno de ejecución de PowerShell para implementar la funcionalidad de administración. Para ello, PowerShell proporciona una API de alojamiento administrado . Mediante las API, la aplicación puede instanciar un espacio de ejecución (una instancia del entorno de ejecución de PowerShell), que se ejecuta en el proceso de la aplicación y se expone como un objeto. [ 8 ] El estado del espacio de ejecución se encapsula en un objeto. Cuando se crea el espacio de ejecución, el entorno de ejecución de PowerShell inicializa la instancia, incluyendo la inicialización de los proveedores y la enumeración de los cmdlets, y actualiza el objeto en consecuencia. A continuación, el espacio de ejecución debe abrirse para procesamiento síncrono o asíncrono. Después de eso, se puede usar para ejecutar comandos.RunspaceSessionStateSessionState
Para ejecutar un comando, Pipelinese debe crear una canalización (representada por un objeto) y asociarla con el espacio de ejecución. El objeto de canalización se rellena con los cmdlets que la componen. Para operaciones secuenciales (como en un script de PowerShell), se crea un objeto Pipeline para cada instrucción y se anida dentro de otro objeto Pipeline. [ 8 ] Cuando se crea una canalización, PowerShell invoca al procesador de canalizaciones, que resuelve los cmdlets en sus ensamblados respectivos (el procesador de comandos ) y agrega una referencia a ellos a la canalización, y los asocia con los InputPipeobjetos y para representar la conexión con la canalización. Los tipos se verifican y los parámetros se vinculan mediante reflexión . [ 8 ] Una vez configurada la canalización, el host llama al método para ejecutar los comandos, o su equivalente asíncrono, . Si la canalización tiene el cmdlet al final de la canalización, escribe el resultado en la pantalla de la consola. De lo contrario, los resultados se entregan al host, que puede aplicar un procesamiento adicional o mostrar la salida por sí mismo.OutputPipeErrorOutputPipeInvoke()InvokeAsync()Write-Host
Microsoft Exchange Server 2007 utiliza las API de alojamiento para proporcionar su interfaz gráfica de administración. Cada operación expuesta en la interfaz gráfica se asigna a una secuencia de comandos de PowerShell (o canalizaciones). El host crea la canalización y la ejecuta. De hecho, la propia consola interactiva de PowerShell es un host de PowerShell que interpreta los scripts introducidos en la línea de comandos, crea los objetos necesarios Pipeliney los invoca.
Configuración del estado deseado
DSC permite especificar de forma declarativa cómo debe configurarse un entorno de software. [ 67 ]
Al ejecutar una configuración , DSC garantiza que el sistema alcance el estado descrito en la configuración. Las configuraciones de DSC son idempotentes. El Administrador de configuración local (LCM) consulta periódicamente el sistema mediante el flujo de control descrito por los recursos (componentes esenciales de DSC) para asegurar que se mantenga el estado de la configuración.
Versiones
Todas las versiones principales siguen recibiendo soporte, y cada una de ellas ha ofrecido compatibilidad con versiones anteriores.
Proyecto Mónada
PowerShell, que inicialmente utilizó el nombre en clave "Monad", se presentó públicamente por primera vez en la Conferencia de Desarrolladores Profesionales en octubre de 2003 en Los Ángeles.
Windows PowerShell
1.0
Denominado Windows PowerShell, la versión 1.0 se lanzó en noviembre de 2006 para Windows XP SP2 , Windows Server 2003 SP1 y Windows Vista [ 68 ] y como un componente opcional de Windows Server 2008 .
2.0

La versión 2.0 se integra con Windows 7 y Windows Server 2008 R2 [ 69 ] y se lanza para Windows XP con Service Pack 3, Windows Server 2003 con Service Pack 2 y Windows Vista con Service Pack 1. [ 70 ] [ 71 ]
La versión incluye cambios en el idioma y la API de alojamiento, además de incluir más de 240 nuevos cmdlets. [ 72 ] [ 73 ]
Las nuevas características incluyen: [ 74 ] [ 75 ] [ 76 ]
- Acceso remoto : Mediante WS-Management , permite invocar scripts y cmdlets en una máquina remota o en un gran conjunto de máquinas remotas.
- Tareas en segundo plano : También llamadas PSJob , permiten invocar una secuencia de comandos (script) o canalización de forma asíncrona. Las tareas pueden ejecutarse en la máquina local o en varias máquinas remotas. Un cmdlet interactivo en una PSJob bloquea la ejecución de la tarea hasta que el usuario la introduzca.
- Transacciones : Habilita el cmdlet y permite a los desarrolladores realizar operaciones transaccionales . Incluye cmdlets de transacción para iniciar, confirmar y revertir una PSTransaction , así como funciones para administrar y dirigir la transacción al cmdlet participante y a las operaciones del proveedor. El proveedor del Registro de PowerShell admite transacciones.
- Funciones avanzadas : Inicialmente llamadas "cmdlets de script", estos cmdlets agrupados fueron posteriormente renombrados como "funciones avanzadas". [ 77 ]
- SteppablePipelines : Esto permite al usuario controlar cuándo se llaman las funciones y de un
BeginProcessing()cmdletProcessRecord().EndProcessing() - Módulos : Permiten a los desarrolladores y administradores de scripts organizar y dividir los scripts en unidades autocontenidas y reutilizables. El código de un módulo se ejecuta en su propio contexto y no afecta el estado fuera del módulo. Los módulos pueden definir un entorno de ejecución restringido mediante un script. Cuentan con un estado persistente, así como con miembros públicos y privados.
- Lenguaje de datos : un subconjunto del lenguaje específico del dominio que permite desacoplar las definiciones de datos de los scripts y permite importar recursos de cadena localizados al script en tiempo de ejecución ( internacionalización de scripts ).
- Depuración de scripts : Permite establecer puntos de interrupción en un script o función. Estos puntos se pueden establecer en líneas, líneas y columnas, comandos y accesos de lectura o escritura a variables. Incluye un conjunto de cmdlets para controlar los puntos de interrupción mediante scripts.
- Gestión de eventos : Permite escuchar, reenviar y actuar sobre eventos de gestión y del sistema. Permite notificar a los hosts sobre los cambios de estado de sus entidades gestionadas. También permite que los scripts se suscriban a ObjectEvents , PSEvents y WmiEvents y los procesen de forma síncrona y asíncrona.
- Entorno de scripting integrado (ISE) : host con interfaz gráfica de usuario que proporciona depurador integrado, resaltado de sintaxis , autocompletado mediante la tecla Tab y hasta 8 consolas compatibles con Unicode (espacios de ejecución) en una interfaz de usuario con pestañas, así como la capacidad de ejecutar solo las partes seleccionadas de un script.
- Transferencia de archivos en red : Soporte nativo para la transferencia de archivos priorizada, limitada y asíncrona entre máquinas mediante el Servicio de transferencia inteligente en segundo plano (BITS). [ 78 ]
- Nuevos cmdlets : Incluyendo
Out-GridView, que muestra datos tabulares en el objeto GridView de WPF , en sistemas que lo permiten y si ISE está instalado y habilitado. - Nuevos operadores :
-Split,-Join, y@operadores de Splatting ( ). - Manejo de excepciones con Try-Catch-Finally : a diferencia de otros lenguajes .NET, esto permite múltiples tipos de excepciones para un solo bloque catch.
- Cadenas aquí anidadas : Las cadenas aquí se han mejorado y ahora pueden anidarse. [ 79 ]
- Comentarios en bloque : Compatibilidad con comentarios en bloque que utilizan
<#y#>como delimitadores. [ 80 ] - Nuevas API : Las nuevas API abarcan desde otorgar mayor control sobre el analizador y el entorno de ejecución al host, hasta la creación y gestión de colecciones de Runspaces (
RunspacePools) y la capacidad de crear Runspaces restringidos que solo permiten invocar un subconjunto configurado de PowerShell. Las nuevas API también admiten la participación en una transacción.
3.0
La versión 3.0 se integra con Windows 8 , Windows Server 2012 , Windows 7 con Service Pack 1, Windows Server 2008 con Service Pack 1 y Windows Server 2008 R2 con Service Pack 1. [ 81 ] [ 82 ]
La versión 3.0 forma parte de un paquete más amplio, Windows Management Framework 3.0 (WMF3), que también contiene el servicio WinRM para admitir el acceso remoto. [ 82 ] Microsoft realizó varias versiones preliminares de tecnología comunitaria de WMF3. Una versión preliminar de tecnología comunitaria 2 (CTP 2) de Windows Management Framework 3.0 se publicó el 2 de diciembre de 2011. [ 83 ] Windows Management Framework 3.0 se lanzó para disponibilidad general en diciembre de 2012 [ 84 ] y se incluye de forma predeterminada en Windows 8 y Windows Server 2012. [ 85 ]
Las nuevas características incluyen: [ 82 ] [ 86 ] : 33–34
- Tareas programadas : Las tareas se pueden programar para que se ejecuten en una fecha y hora preestablecidas utilizando la infraestructura del Programador de tareas de Windows .
- Conectividad de sesión : Las sesiones se pueden desconectar y volver a conectar. Las sesiones remotas son ahora más tolerantes a fallos temporales de la red.
- Mejoras en la escritura de código : Se han añadido la función de autocompletado de código (IntelliSense) y fragmentos de código . ISE permite a los usuarios utilizar cuadros de diálogo para rellenar los parámetros de los cmdlets.
- Compatibilidad con la delegación : Las tareas administrativas pueden delegarse a usuarios que no tienen permisos para ese tipo de tarea, sin otorgarles permisos adicionales permanentes.
- Actualización de la ayuda : La documentación de ayuda se puede actualizar mediante el comando Update-Help.
- Detección automática de módulos : Los módulos se cargan implícitamente siempre que se ejecuta un comando de dicho módulo. La función de autocompletado de código también funciona para los módulos que no están cargados.
- Nuevos comandos : Se añadieron docenas de nuevos módulos, incluyendo funcionalidades para administrar discos
get-WmiObject win32_logicaldisk, volúmenes, cortafuegos, conexiones de red e impresoras, tareas que anteriormente se realizaban a través de WMI.
4.0
La versión 4.0 se integra con Windows 8.1 , Windows Server 2012 R2 , Windows 7 SP1 , Windows Server 2008 R2 SP1 y Windows Server 2012. [ 87 ]
Las nuevas características incluyen:
- Configuración de estado deseado : [ 88 ] [ 89 ] [ 90 ] Extensiones de lenguaje declarativo y herramientas que permiten el despliegue y la gestión de datos de configuración para sistemas que utilizan los estándares de gestión DMTF y el protocolo WS-Management.
- Nueva política de ejecución predeterminada : En Windows Servers, la política de ejecución predeterminada ahora es
RemoteSigned. - Guardar ayuda : Ahora se puede guardar la ayuda para los módulos instalados en equipos remotos.
- Depuración mejorada : El depurador ahora admite flujos de trabajo de depuración, ejecución remota de scripts y la conservación de sesiones de depuración entre reconexiones de sesión.
- -PipelineVariable switch : Un nuevo parámetro omnipresente para exponer el objeto de canalización actual como una variable para fines de programación.
- Diagnóstico de red para administrar conmutadores de red físicos y virtualizados de Hyper-V.
- La sintaxis de los métodos Where y ForEach proporciona un método alternativo para filtrar e iterar sobre objetos.
5.0

La versión 5.0 se volvió a publicar con Windows Management Framework (WMF) 5.0 el 24 de febrero de 2016, tras un lanzamiento inicial con un error grave. [ 91 ]
Las características principales incluían:
- La nueva
classpalabra clave que crea clases para la programación orientada a objetos. - La nueva
enumpalabra clave que crea enumeraciones OneGetcmdlets para dar soporte al gestor de paquetes Chocolatey [ 92 ]- Ampliación del soporte para la gestión de conmutadores a conmutadores de red de capa 2. [ 93 ]
- Depuración de trabajos en segundo plano e instancias alojadas en otros procesos (cada uno de los cuales se denomina "espacio de ejecución").
- Configuración de estado deseado (DSC) Administrador de configuración local (LCM) versión 2.0
- Configuraciones parciales de DSC
- Metaconfiguraciones del Administrador de configuración local de DSC
- Creación de recursos DSC mediante clases
5.1
La versión 5.1 se lanzó junto con la Actualización de aniversario de Windows 10 [ 94 ] el 2 de agosto de 2016 y en Windows Server 2016. [ 95 ] PackageManagement ahora admite proxies, PSReadLine ahora tiene compatibilidad con ViMode y se agregaron dos nuevos cmdlets: Get-TimeZone y Set-TimeZone. El módulo LocalAccounts permite agregar/eliminar cuentas de usuario locales. [ 96 ] Se lanzó una vista previa para Windows 7, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012 y Windows Server 2012 R2 el 16 de julio de 2016, [ 97 ] y se lanzó el 19 de enero de 2017. [ 98 ]
La versión 5.1 es la primera en venir en dos ediciones: "Desktop" y "Core". La edición "Desktop" es la línea de productos de continuación que utiliza .NET Framework, y la edición "Core" se ejecuta en .NET Core y viene incluida con Windows Server 2016 Nano Server. A cambio de un tamaño menor, esta última carece de algunas características, como los cmdlets para administrar el portapapeles o unir un equipo a un dominio, los cmdlets de WMI versión 1, los cmdlets del registro de eventos y los perfiles. [ 25 ] Esta fue la versión final exclusivamente para Windows. La versión 5.1 sigue preinstalada en Windows 10, Windows 11 y Windows Server 2022, mientras que la versión .NET debe instalarse por separado y puede ejecutarse en paralelo con la versión .NET Framework. [ 99 ] [ 100 ]
Núcleo de PowerShell
6.0
Renombrada como PowerShell Core, la versión 6.0 se anunció por primera vez el 18 de agosto de 2016, cuando Microsoft reveló su decisión de hacer que el producto fuera multiplataforma , independiente de Windows, gratuito y de código abierto. [ 5 ] Alcanzó disponibilidad general el 10 de enero de 2018 para Windows, macOS y Linux . [ 101 ] Tiene su propio ciclo de vida de soporte y se adhiere a la política de ciclo de vida de Microsoft introducida con Windows 10: Solo se admite la última versión de PowerShell Core. Microsoft espera lanzar una versión menor para PowerShell Core 6.0 cada seis meses. [ 102 ]
El cambio más significativo en esta versión es la expansión a otras plataformas. Para los administradores de Windows, esta versión no incluyó ninguna característica nueva importante. En una entrevista con la comunidad el 11 de enero de 2018, se le pidió al equipo de desarrollo que enumerara las 10 cosas más interesantes que sucederían para un profesional de TI de Windows que migrara de la versión 5.1 a la versión 6.0. En respuesta, Angel Calvo de Microsoft solo pudo nombrar dos: multiplataforma y código abierto. [ 103 ] PowerShell 6 cambió a UTF-8 como codificación predeterminada, con algunas excepciones. [ 104 ] (la versión 7.4 cambia más a UTF-8). [ 105 ]
6.1
Según Microsoft, una de las nuevas características de la versión 6.1 es la "compatibilidad con más de 1900 cmdlets existentes en Windows 10 y Windows Server 2019 ". [ 106 ] Sin embargo, no se encuentran detalles de estos cmdlets en la versión completa del registro de cambios. [ 107 ] Posteriormente, Microsoft afirma que este número era insuficiente, ya que PowerShell Core no logró reemplazar a Windows PowerShell 5.1 ni ganar popularidad en Windows. [ 108 ] No obstante, sí fue popular en Linux. [ 108 ]
6.2
La versión 6.2 se centra principalmente en mejoras de rendimiento, correcciones de errores y pequeñas mejoras en cmdlets y lenguaje que mejoraron la productividad de los desarrolladores. [ 109 ]
PowerShell
7.0
Renombrada simplemente como PowerShell, la versión 7 reemplaza las líneas de productos anteriores: PowerShell Core y Windows PowerShell. [ 110 ] [ 108 ] El objetivo del desarrollo fue hacer de la versión 7 un reemplazo viable para la versión 5.1, es decir, tener una paridad casi total con ella en términos de compatibilidad con los módulos que vienen con Windows. [ 111 ]
Las nuevas características incluyen: [ 112 ]
- El
-Parallelinterruptor para elForEach-Objectcmdlet para ayudar a manejar el procesamiento paralelo - Una nueva vista de error
- El
Get-Errorcmdlet - Operadores de encadenamiento de canalizaciones (
&&y||) que permiten la ejecución condicional del siguiente cmdlet en la canalización. - El operador ?: para operación ternaria
- El
??operador para la coalescencia nula - El
??=operador para la asignación de coalescencia nula - Multiplataforma
Invoke-DscResource(experimental) - Devolución del
Out-GridViewcmdlet - Regreso del
-ShowWindowinterruptor para elGet-Help
7.2
La versión 7.2 es la siguiente versión con soporte a largo plazo , después de la versión 7.0. Utiliza .NET 6.0 e incluye paquetes de instalación universales para Linux. En Windows, las actualizaciones a la versión 7.2 y posteriores se realizan a través del servicio Microsoft Update ; esta función no estaba disponible en las versiones 6.0 a 7.1. [ 113 ]
7.3
La versión 7.3 incluye algunas actualizaciones y correcciones generales de Cmdlets, pruebas para paquetes dependientes del framework en la canalización de lanzamiento, así como mejoras en la compilación y el empaquetado. [ 114 ]
7.4
La versión 7.4 se basa en .NET 8 y se considera la versión de soporte a largo plazo (LTS). [ 115 ]
Los cambios incluyen: [ 116 ]
- Los webcmdlets utilizan por defecto la codificación UTF-8 (en lugar de la supercolección ASCII ISO-8859-1 , que no admite Unicode ). Anteriormente, UTF-8 era la codificación predeterminada para otros elementos, pero no para todos.
7.5
La versión 7.5 es la última versión estable, publicada en enero de 2025; se basó en .NET 9.0.1. Incluye mejoras de rendimiento, usabilidad y seguridad. [ 117 ] Las actualizaciones clave incluyen mejoras en el autocompletado de tabulación, como una mejor inferencia de tipos y nuevos completadores de argumentos, así como correcciones para Invoke-WebRequest e Invoke-RestMethod. Esta versión también agrega los nuevos cmdlets ConvertTo-CliXml y ConvertFrom-CliXml, y actualiza módulos principales como PSReadLine y Microsoft.PowerShell.PSResourceGet. Los cambios incompatibles incluyen actualizaciones en el manejo de parámetros de Test-Path y configuraciones predeterminadas para New-FileCatalog.
Antes del lanzamiento GA hubo 5 versiones preliminares y 1 versión RC de PowerShell v7.5.0, [ 118 ] y se espera una publicación completa en el blog sobre esta versión próximamente.
7.6
La versión 7.6 está basada en .NET 9 y es la última versión. Fue lanzada el 17 de marzo de 2026. [ 119 ]
Los cambios incluyen:
- Actualizaciones y correcciones generales de cmdlets
- Actualizar los manifiestos de recursos del perfil DSC de PowerShell para permitir contenido nulo.
- Agregar anotaciones de GitHub Actions para fallos en las pruebas de Pester
- Corregir Import-Module.Tests.ps1 para manejar la plataforma Arm32 [ 120 ]
Comparación de cmdlets con comandos similares
La siguiente tabla contiene varios cmdlets incluidos en PowerShell que tienen una funcionalidad notablemente similar a la de comandos en otros intérpretes de comandos. Muchos de estos cmdlets se muestran al usuario mediante alias predefinidos para que su uso resulte familiar a los usuarios de otros intérpretes de comandos.
Notas
- ↑ implementado como una función predefinida
- ↑
lsno está presente en la versión de Linux de PowerShell Core. - ↑
manno está presente en la versión de Linux de PowerShell Core. - ↑ ' fc está definido en el estándar POSIX y history no lo está. Sin embargo, la mayoría de las implementaciones de Unix también definen history .
- 1 2 Disponible en Windows NT 4 , Windows 98 Resource Kit , Windows 2000 Support Tools
- 1 2 Introducido en Windows XP Professional Edition
- ↑
curlywgetestán ausentes de PowerShell Core, para no interferir con comandos nativos de nombre similar. - ↑ Solo consola de comandos de Windows
- ↑ También se utiliza en UNIX para enviar cualquier señal a un proceso ; la señal "Terminar" es simplemente la predeterminada.
extensiones de nombre de archivo
Soporte de aplicaciones
Véase también
Referencias
- ↑ "Versión 7.6.3" . 16 de junio de 2026. Consultado el 17 de junio de 2026 .
- ↑ "Versión 7.7.0-preview.2 de PowerShell" . GitHub . 27 de mayo de 2026. Consultado el 28 de mayo de 2026 .
- ↑ "¡PowerShell para todos los sistemas!" . 12 de junio de 2017 – vía GitHub.com .
- ↑ Snover, Jeffrey (25 de mayo de 2008). "PowerShell y WPF: ¿Qué demonios?" . Blog de Windows PowerShell . Microsoft.
- 1 2 3 4 Bright, Peter (18 de agosto de 2016). "PowerShell es el último lanzamiento de código abierto de Microsoft, que llegará a Linux y OS X" . Ars Technica . Condé Nast . Archivado del original el 9 de abril de 2020. Recuperado el 12 de mayo de 2020 .
- ↑ "Anuncio de la compilación 14971 de Windows 10 Insider Preview para PC" . 17 de noviembre de 2016.
- ↑ "PowerShell está reemplazando al Símbolo del sistema" .
- 1 2 3 4 5 "powershell" . Consultado el 13 de marzo de 2023 .
- ↑ Truher, Jim (diciembre de 2007). "Amplíe Windows PowerShell con comandos personalizados" . Revista MSDN . Microsoft. Archivado del original el 6 de octubre de 2008.
- ↑ Lowe, Scott (4 de enero de 2007). "Exchange 2007: Acostúmbrese a la línea de comandos" . TechRepublic . CBS Interactive . Archivado del original el 16 de noviembre de 2018. Consultado el 12 de mayo de 2020 .
- ↑ Snover, Jeffrey (13 de noviembre de 2007). "¡Soporte de SQL Server para PowerShell!" . Blog de Windows PowerShell (entrada de blog). Microsoft. Archivado del original el 15 de noviembre de 2007. Recuperado el 13 de noviembre de 2007 .
- ↑ Dragan, Richard V. (23 de abril de 2003). "Windows Server 2003 ofrece mejoras en todos los aspectos" . PCMag.com . Ziff Davis .
Una característica destacada es que prácticamente todas las utilidades de administración ahora funcionan desde la línea de comandos (y la mayoría están disponibles a través de telnet).
- ↑ Jones, Don (2020). Shell of an Idea: The Untold History of PowerShell . Don Gannon-Jones. p. 25. ISBN 978-1-9536450-3-6.
- ↑ Jeffrey P. Snover (8 de agosto de 2002). "Manifiesto de la Mónada" (PDF) . Blog de Windows PowerShell . Microsoft . Consultado el 2 de abril de 2021 .
- ↑ Biggar y Harbaugh (14 de septiembre de 2017). "El hombre detrás de Windows PowerShell" . To Be Continuous (Podcast). Heavybit . Consultado el 14 de septiembre de 2017 .
- ↑ "Windows PowerShell (Monad) ya está aquí" . Blog de Windows PowerShell . Microsoft . 25 de abril de 2006.
- ↑ Snover, Jeffrey (15 de noviembre de 2006). "Windows PowerShell y Windows Vista" . Blog de Windows PowerShell (entrada de blog). Microsoft .
- ↑ "Marco de administración de Windows (Windows PowerShell 2.0, WinRM 2.0 y BITS 4.0)" . Soporte . Microsoft . 30 de septiembre de 2013. Archivado del original el 13 de octubre de 2013.
- ↑ Posey, Brien (6 de octubre de 2009). "10 razones por las que deberías aprender a usar PowerShell" . TechRepublic . Consultado el 2 de abril de 2021 .
- ↑ "¿Qué es el acoso y por qué debería importarme?" 14 de diciembre de 2015.
- ↑ Snover, Jeffrey (18 de agosto de 2016). "PowerShell es de código abierto y está disponible en Linux" . Blog de Microsoft Azure . Microsoft .
- ↑ "PowerShell/PowerShell" . GitHub . Consultado el 18 de agosto de 2016 .
- ↑ Hansen, Kenneth; Calvo, Angel (18 de agosto de 2016). "¡PowerShell en Linux y código abierto!" . Blog de Windows PowerShell . Microsoft .
- ↑ Foley, Mary Jo (18 de agosto de 2016). "Microsoft libera el código fuente de PowerShell; lo lleva a Linux y Mac OS X" . ZDNet . CBS Interactive .
- 1 2 "PowerShell en Nano Server" . TechNet . Microsoft . 20 de octubre de 2016.
- ↑ "Pash" . SourceForge . Dice Holdings, Inc. Consultado el 27 de septiembre de 2011 .
- ↑ "Proyecto Pash" . GitHub . Consultado el 10 de abril de 2013 .
- ↑ "Pash ahora está obsoleto · Problema n.° 429 · Pash-Project/Pash" . GitHub . Consultado el 26 de noviembre de 2019 .
- ↑ Jones, Don (2020). Shell of an Idea: The Untold History of PowerShell . Don Gannon-Jones. p. 45. ISBN 978-1-9536450-3-6.
- ↑ Payette, Bruce (2008). Windows PowerShell en acción . Serie Manning Pubs Co. Manning. pág. 27. ISBN 9781932394900. Consultado el 22 de julio de 2016.
El lenguaje principal de PowerShell se basa en la gramática POSIX 1003.2 para el shell Korn .
- ↑ Jones, Don (2020). Shell of an Idea: The Untold History of PowerShell . Don Gannon-Jones. p. 109. ISBN 978-1-9536450-3-6.
- ↑ "about_Command_Precedence" . TechNet . Microsoft . 8 de mayo de 2014.
- ↑ Wheeler, Sean (7 de septiembre de 2021). "Acerca del análisis sintáctico - PowerShell" . Microsoft Docs . Consultado el 5 de diciembre de 2021 .
- ↑ "Sistema de tipos extendido de Windows PowerShell" . Consultado el 28 de noviembre de 2007 .
- 1 2 3 "Cmdlets de Windows PowerShell" . Consultado el 28 de noviembre de 2007 .
- ↑ "Creando tu primer cmdlet" . Consultado el 28 de noviembre de 2007 .
- ↑ "Get-Verb" . TechNet . Microsoft . 8 de mayo de 2014.
- ↑ "Descripción general de los cmdlets" . MSDN . Microsoft . 8 de mayo de 2014.
- ↑ "Agregar parámetros que procesan la entrada de la línea de comandos" . Consultado el 28 de noviembre de 2007 .
- ↑ "Agregar parámetros que procesan la entrada de la canalización" . Consultado el 28 de noviembre de 2007 .
- ↑ "Proveedores de Windows PowerShell" . Consultado el 14 de octubre de 2010 .
- ↑ Yoshizawa, Tomoaki; Ramos, Durval (29 de septiembre de 2012). "Cmdlets de PowerShell 1.0" . Artículos de TechNet . Microsoft.
- ↑ Yoshizawa, Tomoaki (10 de julio de 2012). "Cmdlets de PowerShell 2.0" . Artículos de TechNet . Microsoft.
- ↑ Wilson, Ed (2013). "1: Descripción general de Windows PowerShell 3.0" . Windows PowerShell 3.0 paso a paso . Sebastopol, California: Microsoft Press . ISBN 978-0-7356-7000-6OCLC 829236530. Windows
PowerShell 3.0 incluye aproximadamente 1000 cmdlets en Windows 8
. - ↑ Wilson, Ed (2015). "1: Descripción general de Windows PowerShell 5.0" . Windows PowerShell paso a paso (Tercera ed.). Redmond, Washington: Microsoft Press . ISBN 978-1-5093-0043-3OCLC 927112976. Windows PowerShell 5.0
incluye aproximadamente 1300 cmdlets en Windows 10
. - ↑ "Manual del propietario de Windows PowerShell: Canalización y tuberías en Windows PowerShell" . TechNet . Microsoft . Consultado el 27 de septiembre de 2011 .
- ↑ Jones, Don (2008). "Windows PowerShell: repensando el flujo de trabajo" . Microsoft TechNet . Microsoft . Recuperado el 28 de noviembre de 2007 .
- ↑ "Conceptos de objetos de Windows PowerShell" . Archivado del original el 19 de agosto de 2007. Consultado el 28 de noviembre de 2007 .
- ↑ "Cómo funciona REALMENTE el formato y la salida de PowerShell" . Consultado el 28 de noviembre de 2007 .
- ↑ "Más información: ¿Cómo funciona realmente el formato de PowerShell?" . Consultado el 28 de noviembre de 2007 .
- ↑ "about_Pipelines" . TechNet . Microsoft . 8 de mayo de 2014.
- ↑ "about_Objects" . TechNet . Microsoft . 8 de mayo de 2014.
- 1 2 "about_Format.ps1xml" . TechNet . Microsoft . 8 de mayo de 2014.
- ↑ "Funciones anónimas y bloques de código en PowerShell" . Consultado el 21 de enero de 2012 .
- ↑ Payette, Bruce (2007). Windows PowerShell en acción . Manning. pág. 144. ISBN 978-1-932394-90-0.
- ↑ "Introducción a las variables de Windows PowerShell" . Archivado del original el 27 de mayo de 2018. Consultado el 28 de noviembre de 2007 .
- ↑ "Conversión de bytes" . Consejo de la semana de Windows PowerShell . 22 de octubre de 2009. Consultado el 15 de noviembre de 2013 .
- ↑ Ravikanth (20 de mayo de 2013). "Conversión a unidades de tamaño (KB, MB, GB, TB y PB) sin usar multiplicadores de PowerShell" . PowerShell Magazine .
- 1 2 3 "about_Functions" . Microsoft TechNet . Microsoft . 17 de octubre de 2013. Consultado el 15 de noviembre de 2013 .
- 1 2 "Pruebas ligeras con Windows PowerShell" . Consultado el 28 de noviembre de 2007 .
- ↑ Angelopoulos, Alex; Karen, Bemowski (4 de diciembre de 2007). "PowerShell aprendió sobre las comillas inteligentes" . Windows IT Pro . Penton Media . Recuperado el 15 de noviembre de 2013 .
- ↑ "Acerca de los caracteres especiales" . PowerShell / Scripting. Microsoft . 8 de junio de 2017. Consultado el 20 de junio de 2019 .
- ↑ "Trampa [ Excepción ] { "En PowerShell" }" . Consultado el 28 de noviembre de 2007 .
- ↑ "Ejecución de scripts de Windows PowerShell" . Microsoft . Consultado el 28 de noviembre de 2007 .
- ↑ "about_Signing" . Microsoft TechNet . Microsoft . 17 de octubre de 2013. Consultado el 15 de noviembre de 2013 .
- ↑ Lee Holmes (septiembre de 2006). Guía de referencia rápida de Windows PowerShell . O'Reilly Media.
- ↑ eslesar (23 de mayo de 2023). "Descripción general de la configuración del estado deseado de Windows PowerShell" . msdn.microsoft.com .
- ↑ Chung, Leonard; Snover, Jeffrey; Kumaravel, Arul (14 de noviembre de 2006). "¡Hemos terminado! ¡Se ha lanzado Windows PowerShell 1.0!" . Blog de Windows PowerShell . Microsoft .
- ↑ "¡PowerShell se instalará de forma predeterminada en Windows Server 2008 R2 (WS08R2) y Windows 7 (W7)!" . Blog de Windows PowerShell . Microsoft . 28 de octubre de 2008 . Consultado el 27 de septiembre de 2011 .
- ↑ "¡El marco de administración de Windows ya está aquí!" 27 de octubre de 2009. Consultado el 30 de octubre de 2009 .
- ↑ "Base de conocimientos de soporte técnico de Microsoft: Marco de administración de Windows (Windows PowerShell 2.0, WinRM 2.0 y BITS 4.0)" . Support.microsoft.com. 23 de septiembre de 2011. Consultado el 27 de septiembre de 2011 .
- ↑ "574 razones por las que estamos tan orgullosos y optimistas sobre W7 y WS08R2" . Blog de Windows PowerShell . Microsoft . 29 de octubre de 2008. Consultado el 27 de septiembre de 2011 .
- ↑ Snover, Jeffrey (2008). "PowerShell: Creación de servicios web gestionables" . Archivado del original el 13 de octubre de 2008. Recuperado el 19 de julio de 2015 .
- ↑ "Novedades de la versión CTP de PowerShell 2.0" . Consultado el 28 de noviembre de 2007 .
- ↑ "Windows PowerShell V2 Community Technology Preview 2 (CTP2) – releaseNotes" . Microsoft . Archivado del original el 6 de mayo de 2008. Consultado el 5 de mayo de 2008 .
- ↑ "Diferencias entre PowerShell 1.0 y PowerShell 2.0" . Archivado del original el 17 de septiembre de 2010. Consultado el 26 de junio de 2010 .
- ↑ Jones, Don (mayo de 2010). "Windows PowerShell: Escritura de cmdlets en scripts" . TechNet Magazine . Microsoft.
- ↑ "Complemento GoGrid: administración de servicios en la nube con PowerShell" . Blog de Windows PowerShell . Microsoft . 14 de octubre de 2008. Consultado el 27 de septiembre de 2011 .
- ↑ "Emit-XML" . Blog de Windows PowerShell . Microsoft . 17 de octubre de 2008. Consultado el 27 de septiembre de 2011 .
- ↑ "Bloquear comentarios en V2" . Blog de Windows PowerShell . Microsoft . 14 de junio de 2008. Consultado el 27 de septiembre de 2011 .
- ↑ Lee, Thomas (13 de agosto de 2012). "¡PowerShell versión 3 es RTM!" . Under The Stairs . Recuperado el 13 de agosto de 2012 .
- 1 2 3 "Windows Management Framework 3.0" . Centro de descargas . Microsoft . 4 de septiembre de 2012. Consultado el 8 de noviembre de 2012 .
- ↑ "Windows Management Framework 3.0 Community Technology Preview (CTP) #2 ya está disponible para su descarga" . Blog de Windows PowerShell . Microsoft . 2 de diciembre de 2011.
- ↑ "Windows Management Framework 3.0" . Centro de descargas . Microsoft . 3 de diciembre de 2012.
- ↑ Jofre, JuanPablo (14 de diciembre de 2016). "Requisitos del sistema de Windows PowerShell" . Microsoft Developer Network . Microsoft . Consultado el 20 de abril de 2017 .
- ↑ Honeycutt, Jerry (2012). Woolley, Valerie (ed.). Introducción a Windows 8: Una visión general para profesionales de TI . Redmond, WA: Microsoft Press . ISBN 978-0-7356-7050-1.
- ↑ "Windows Management Framework 4.0 ya está disponible" . Microsoft . 24 de octubre de 2013. Consultado el 4 de noviembre de 2013 .
- ↑ Levy, Shay (25 de junio de 2013). "Nuevas características en Windows PowerShell 4.0" . PowerShell Magazine . Consultado el 26 de junio de 2013 .
- ↑ "Configuración del estado deseado en Windows Server 2012 R2 PowerShell" . Canal 9. Microsoft . 3 de junio de 2013. Archivado del original el 26 de diciembre de 2013. Consultado el 26 de junio de 2013 .
- ↑ Hall, Adrian (7 de junio de 2013). "Reflexiones de Microsoft TechEd Norteamérica" . Blogs: Consejos y trucos . Splunk . Consultado el 26 de junio de 2013 .
- ↑ "Se han vuelto a publicar los paquetes RTM de Windows Management Framework (WMF) 5.0" . Blog de Windows PowerShell . Microsoft . 24 de febrero de 2016.
- ↑ "Preguntas y respuestas" . GitHub . Consultado el 21 de abril de 2015 .
- ↑ Snover, Jeffrey (3 de abril de 2014). "Windows Management Framework V5 Preview" . blogs.technet.com . Microsoft . Archivado del original el 30 de junio de 2014. Recuperado el 21 de abril de 2015 .
- ↑ dice, Jaap Brasser (2 de agosto de 2016). "#PSTip Nuevos comandos de PowerShell en la actualización de aniversario de Windows 10" .
- ↑ "Novedades de Windows Server 2016 Standard Edition, Parte 9: Administración y automatización" . 4 de septiembre de 2016.
- ↑ "Módulo Microsoft.PowerShell.LocalAccounts" . technet.microsoft.com . 16 de junio de 2016.
- ↑ "Anuncio de la versión preliminar de Windows Management Framework (WMF) 5.1" . 16 de julio de 2016.
- ↑ "WMF 5.1" . Centro de descargas de Microsoft .
- ↑ "¿Qué es Windows PowerShell? - PowerShell" . Microsoft Learn . 7 de marzo de 2024. Consultado el 19 de agosto de 2024 .
- ↑ "Migración de Windows PowerShell 5.1 a PowerShell 7 - PowerShell" . Microsoft Learn . 2 de abril de 2024. Consultado el 19 de agosto de 2024 .
- ↑ Aiello, Joey (11 de enero de 2018). "PowerShell Core 6.0: ¡Disponible para el público general y con soporte!" . Blog del equipo de PowerShell . Microsoft. Archivado del original el 16 de julio de 2019. Consultado el 11 de junio de 2018 .
- ↑ Aiello, Joey; Wheeler, Sean (10 de enero de 2018). "Ciclo de vida del soporte principal de PowerShell" . Microsoft Docs . Microsoft . Archivado del original el 16 de noviembre de 2018. Recuperado el 11 de enero de 2018 .
- ↑ Calvo, Angel (11 de enero de 2018). "Las 10 razones más interesantes para migrar" . PowerShell AMA . Microsoft .
- ↑ sdwheeler (3 de agosto de 2023). "Novedades de PowerShell Core 6.0" . learn.microsoft.com . Consultado el 11 de diciembre de 2023.
La codificación predeterminada es UTF-8 sin BOM, excepto para New-ModuleManifest
. - ↑ "Comprender la codificación de archivos en VS Code y PowerShell - PowerShell" . learn.microsoft.com . 29 de noviembre de 2023. Consultado el 11 de diciembre de 2023 .
- ↑ Aiello, Joey (13 de septiembre de 2018). "Anuncio de PowerShell Core 6.1" . devblogs.microsoft.com . Microsoft . Consultado el 1 de junio de 2019 .
- ↑ "PowerShell/PowerShell" . GitHub . Consultado el 22 de junio de 2020 .
- 1 2 3 Lee, Steve (5 de abril de 2019). "La próxima versión de PowerShell: PowerShell 7" . Microsoft . Recuperado el 1 de junio de 2019 .
- ↑ Lee, Steve (28 de marzo de 2019). "Disponibilidad general de PowerShell Core 6.2" . devblogs.microsoft.com . Microsoft . Consultado el 1 de junio de 2019 .
- ↑ Mackie, Kurt (30 de mayo de 2019). "Microsoft lanza la versión preliminar de PowerShell 7" . 1105 Media Inc. Recuperado el 1 de junio de 2019 .
- ↑ Lee, Steve (30 de mayo de 2019). "Hoja de ruta de PowerShell 7" . devblogs.microsoft.com . Microsoft . Consultado el 12 de agosto de 2020 .
- ↑ "PowerShell 7 Preview 5 | PowerShell" . 23 de octubre de 2019. Archivado del original el 15 de febrero de 2020. Consultado el 5 de marzo de 2020 .
- ↑ "PowerShell 7.2 es la nueva versión del intérprete de comandos de próxima generación de Microsoft" . itsfoss.net . 12 de noviembre de 2021.
- ↑ "Versión v7.3.0 de PowerShell · PowerShell/PowerShell" . GitHub . Archivado del original el 9 de noviembre de 2022. Consultado el 7 de marzo de 2022 .
- ↑ "Versión v7.4.7 de PowerShell · PowerShell/PowerShell" . GitHub . Consultado el 27 de enero de 2025 .
- ↑ sdwheeler (23 de enero de 2025). "Novedades de PowerShell 7.4 - PowerShell" . learn.microsoft.com . Consultado el 27 de enero de 2025 .
- ↑ sdwheeler (23 de enero de 2025). "Novedades de PowerShell 7.5 - PowerShell" . learn.microsoft.com . Consultado el 27 de enero de 2025 .
- ↑ "Versión v7.5.0 de PowerShell · PowerShell/PowerShell" . GitHub . Consultado el 27 de enero de 2025 .
- ↑ "Versión v7.6.0 de PowerShell · PowerShell/PowerShell" . GitHub . Consultado el 27 de enero de 2025 .
- ↑ sdwheeler (17 de enero de 2025). "Novedades de PowerShell 7.6 - PowerShell" . learn.microsoft.com . Consultado el 27 de enero de 2025 .
- ↑ "¡Tar y Curl llegan a Windows! - Comunidad tecnológica de Microsoft - 382409" . 22 de marzo de 2019. Archivado del original el 11 de septiembre de 2020. Consultado el 17 de mayo de 2020 .
- ↑ "Schtasks.exe" . 12 de marzo de 2023. Consultado el 25 de mayo de 2025 .
- ↑ Wheeler, Sean (2 de junio de 2020). "Acerca de los scripts" . Microsoft Docs . Microsoft.
- ↑ Wheeler, Sean; Smatlak, David; Wilson, Chase (16 de octubre de 2019). "Cómo escribir un manifiesto de módulo de PowerShell" . Docs . Microsoft.
- ↑ Wheeler, Sean; Smatlak, David (22 de noviembre de 2019). "Cómo escribir un módulo de script de PowerShell" . Microsoft Docs . Microsoft.
- ↑ Wheeler, Sean; Jofre, Juan Pablo; Vorobev, Sergei; Nikolaev, Kirill; Coulter, David (2 de junio de 2020). "Acerca de Types.ps1xml" . Microsoft Docs . Microsoft.
- ↑ Wheeler, Sean; Jofre, Juan Pablo; Vorobev, Sergei; Nikolaev, Kirill; Coulter, David. "Export-Console" . Microsoft Docs . Microsoft.
- ↑ Wheeler, Sean (2 de junio de 2020). "Acerca de los archivos de configuración de sesión" . Microsoft Docs . Microsoft.
- ↑ Wheeler, Sean (2 de junio de 2020). "New-PSRoleCapabilityFile" . Microsoft Docs . Microsoft.
- ↑ "Microsoft Transporter Suite para Lotus Domino" . Microsoft . Consultado el 7 de marzo de 2008 .
- ↑ "PowerTools para Open XML" . Consultado el 20 de junio de 2008 .
- ↑ "MO74: WebSphere MQ – Biblioteca de Windows PowerShell" . Consultado el 5 de diciembre de 2007 .
- ↑ "Opciones de línea de comandos de los complementos principales de IoT" . 15 de octubre de 2018. Consultado el 13 de junio de 2020 .
- ↑ "Comandos de PowerShell para Active Directory por Quest Software" . Consultado el 2 de julio de 2008 .
- ↑ "Acceso remoto a PowerShell a través de directivas de grupo" . Consultado el 7 de diciembre de 2007 .
- ↑ "VMware vSphere PowerCLI" . Consultado el 9 de septiembre de 2014 .
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - ↑ "IIS7 PowerShell Provider Tech Preview 2" . Blog de Windows PowerShell . Archivado del original el 4 de febrero de 2010. Consultado el 3 de julio de 2008 .
- ↑ "Felicitaciones al equipo de diagnóstico de Win7" . Consultado el 15 de junio de 2009 .
- ↑ Michael, Niehaus (10 de julio de 2009). "MDT 2010 Nueva característica n.° 16: compatibilidad con PowerShell" . Recuperado el 27 de octubre de 2014 .
- ↑ "Felicitaciones a NetApp por Data ONTAP PowerShell ToolKit" . Consultado el 15 de junio de 2010 .
- ↑ "Anuncio de PowerShell Toolkit 4.2" . 23 de junio de 2016. Consultado el 7 de septiembre de 2016 .
- ↑ "Programación de trabajos heterogéneos con PowerShell" . Consultado el 15 de septiembre de 2010 .
- ↑ "Extensiones de PowerShell de UIAutomation" . Archivado del original el 17 de agosto de 2016. Consultado el 16 de febrero de 2012 .
- ↑ "EqualLogic HIT-ME con PowerShell" . Consultado el 9 de marzo de 2012 .
- ↑ de:LOGINventory
- ↑ "Selenium PowerShell eXtensions" . Consultado el 20 de agosto de 2012 .
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
Lecturas adicionales
- Finke, Douglas (2012). Windows PowerShell para desarrolladores . O'Reilly Media . ISBN 978-1-4493-2270-0.
- Holmes, Lee (2006). Windows PowerShell Quick Reference . O'Reilly Media . ISBN 0-596-52813-2.
- Holmes, Lee (2007). Windows PowerShell Cookbook . O'Reilly Media . ISBN 978-0-596-52849-2.
- Jones, Don; Hicks, Jeffery (2010). Windows PowerShell 2.0: TFM (3.ª ed.). Sapien Technologies. ISBN 978-0-9821314-2-8.
- Jones, Don (2020). Shell of an Idea: The Untold History of PowerShell . Publicado por el propio autor. ISBN 978-1-9536450-3-6.
- Kopczynski, Tyson; Handley, Pete; Shaw, Marco (2009). Windows PowerShell Unleashed (2.ª ed.). Pearson Education . ISBN 978-0-672-32988-3.
- Kumaravel, Arul; White, Jon; Naixin Li, Michael; Happell, Scott; Xie, Guohui; Vutukuri, Krishna C. (2008). Programación profesional de Windows PowerShell: Snapins, Cmdlets, Hosts y proveedores . Wrox Press . ISBN 978-0-470-17393-0.
- Oakley, Andy (2005). Monad (también conocido como PowerShell) . O'Reilly Media . ISBN 0-596-10009-4.
- Watt, Andrew (2007). Professional Windows PowerShell . Wrox Press . ISBN 978-0-471-94693-9.
- Wilson, Ed (2013). Windows PowerShell 3.0 Paso a paso . Microsoft Press . ISBN 978-0-7356-6339-8.
- Wilson, Ed (2014). Windows PowerShell Best Practices . Microsoft Press . ISBN 978-0-7356-6649-8.
Enlaces externos
- Sitio web oficial

- PowerShell en GitHub
- Guía de supervivencia de Windows PowerShell. Archivada el 15 de septiembre de 2012 en Wayback Machine en TechNet Wiki.
- Marco de administración de Windows archivado el 8 de marzo de 2026 en Wayback Machine .
- Comandos de Windows
- Lenguajes de programación .NET
- Gestión de la configuración
- Lenguajes de programación de tipado dinámico
- Software anteriormente propietario
- Intérpretes (informática)
- Software gratuito de Microsoft
- Lenguajes de programación de Microsoft
- Lenguajes de programación orientados a objetos
- Lenguajes de programación procedimental
- Lenguajes de programación creados en 2006
- Lenguajes de scripting
- Software que utiliza la licencia MIT.
- Lenguajes de programación orientados a texto
- shells de Unix
- Administración de Windows
- shells de comandos de Windows