PowerShell es un marco de gestión de configuración y automatización de tareas de Microsoft , que consta de un shell de línea de comandos y el lenguaje de secuencias de comandos asociado . Inicialmente, solo un componente de 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 se basa en .NET Framework , el segundo en .NET Core .
Paradigma | Imperativo , pipeline , orientado a objetos , funcional y reflexivo |
---|---|
Diseñada por | Jeffrey Snover , Bruce Payette, James Truher (et al.) |
Desarrollador | Microsoft |
Apareció por primera vez | 14 de noviembre de 2006 |
Lanzamiento estable | 7.1.3 / 11 de marzo de 2021 [1] |
Versión de vista previa | v7.2.0-preview.5 / 14 de abril de 2021 [2] |
Disciplina de mecanografía | Fuerte , seguro , implícito y dinámico |
Lenguaje de implementación | C# |
Plataforma | .NET Framework , .NET Core |
SO |
|
Licencia | Licencia MIT [3] (pero el componente de Windows sigue siendo propietario ) |
Extensiones de nombre de archivo |
|
Sitio web | microsoft |
Influenciado por | |
Python , Ksh , Perl , C # , CL , DCL , SQL , Tcl , Tk , [4] Chef , Puppet |
En PowerShell, las tareas administrativas generalmente se realizan mediante cmdlets (se pronuncia command-lets ), que son clases de .NET especializadas que implementan una operación en particular. Estos funcionan accediendo a los datos en diferentes almacenes de datos, como el sistema de archivos o el registro , que se ponen a disposición de PowerShell a través de proveedores . Los desarrolladores de terceros pueden agregar cmdlets y proveedores a PowerShell. [6] [7] Los scripts pueden utilizar cmdlets, que a su vez pueden estar empaquetados en módulos.
PowerShell proporciona acceso a COM y WMI , lo que permite a los administradores realizar tareas administrativas en sistemas Windows locales y remotos, así como WS-Management y CIM, lo que permite la gestión de dispositivos de red y sistemas Linux remotos. PowerShell también proporciona una API de hospedaje con la que el tiempo de ejecución de PowerShell puede integrarse dentro de otras aplicaciones. Estas aplicaciones pueden usar la funcionalidad de PowerShell para implementar ciertas operaciones, incluidas las expuestas a través de la interfaz gráfica . Microsoft Exchange Server 2007 ha utilizado esta capacidad 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. [6] [8] Otras aplicaciones de Microsoft, incluido Microsoft SQL Server 2008, también exponen su interfaz de administración a través de cmdlets de PowerShell. [9]
PowerShell incluye su propia ayuda extensa basada en consola (similar a las páginas de manual en shells de Unix ) accesible a través del Get-Help
cmdlet. Los contenidos de ayuda local actualizados se pueden recuperar de Internet a través del Update-Help
cmdlet. Alternativamente, la ayuda de la web se puede adquirir en una base de caso por caso a través del -online
cambio a Get-Help
.
Fondo
Fondo
Cada versión de Microsoft Windows para computadoras personales ha incluido un intérprete de línea de comandos (CLI) para administrar el sistema operativo. Su predecesor, MS-DOS , se basó exclusivamente en una CLI. Estos están COMMAND.COM
en MS-DOS y Windows 9x , y cmd.exe
en la familia de sistemas operativos Windows NT . Ambos admiten algunos comandos internos básicos. Para otros propósitos, se debe escribir una aplicación de consola separada . También incluyen un lenguaje de programación básico ( archivos por lotes ), que se puede utilizar para automatizar varias tareas. Sin embargo, no se pueden utilizar para automatizar todas las facetas de la funcionalidad de la interfaz gráfica de usuario (GUI), en parte porque los equivalentes de operaciones en la línea de comandos son limitados y el lenguaje de programación es elemental. En Windows Server 2003 , la situación mejoró, pero la compatibilidad con secuencias de comandos seguía siendo insatisfactoria. [10]
Microsoft trató de abordar algunas de estas deficiencias mediante la introducción del 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 que los scripts se escriban en lenguajes compatibles, como JScript y VBScript , aprovechando las API expuestas por las aplicaciones a través del modelo de objetos de componentes ( COM ). Sin embargo, tiene sus propias deficiencias: su documentación no es muy accesible y rápidamente se ganó la reputación de vector de vulnerabilidad del sistema después de que varios virus informáticos de alto perfil explotaran las debilidades de sus disposiciones de seguridad. Las diferentes versiones de Windows proporcionaron varios intérpretes de línea de comandos para propósitos especiales (como netsh y WMIC ) con sus propios conjuntos de comandos, pero no eran interoperables.
Monada
En 2002, Microsoft había comenzado a desarrollar un nuevo enfoque para la administración de la línea de comandos, incluida una CLI llamada Monad (también conocida como Microsoft Shell o MSH). Las ideas detrás de esto fueron publicadas en agosto de 2002 en un libro blanco llamado "Manifiesto Mónada" por su arquitecto jefe, Jeffrey Snover . [11] En una entrevista de 2017, Snover explica la génesis de PowerShell, diciendo que había estado tratando de hacer que las herramientas Unix estuvieran disponibles en Windows, lo que no funcionó debido a " diferencias arquitectónicas centrales entre Windows y Linux ". Específicamente, señaló que Linux considera todo un archivo de texto ASCII , mientras que Windows considera todo una " API que devuelve datos estructurados". Eran fundamentalmente incompatibles, lo que lo llevó a adoptar un enfoque diferente. [12]
Monad iba a ser una nueva CLI extensible con un nuevo diseño capaz de automatizar una variedad de tareas administrativas centrales. Microsoft demostró por primera vez Monad públicamente en la Conferencia de Desarrollo Profesional en Los Ángeles en octubre de 2003. Unos meses más tarde, abrieron una versión beta privada, que finalmente condujo a una versión beta pública. Microsoft publicó la primera versión beta pública de Monad el 17 de junio de 2005 y la Beta 2 el 11 de septiembre de 2005 y la Beta 3 el 10 de enero de 2006.
Potencia Shell
El 25 de abril de 2006, poco después del anuncio inicial de Monad, Microsoft anunció que Monad había sido rebautizado como Windows PowerShell , posicionándolo como una parte importante de sus ofertas de tecnología de gestión. [13] Release Candidate 1 de PowerShell se lanzó al mismo tiempo. Un aspecto significativo tanto del cambio de nombre como del RC fue que ahora era un componente de Windows, en lugar de un simple complemento.
Release Candidate 2 de PowerShell versión 1 se lanzó el 26 de septiembre de 2006, con la versión final para la web el 14 de noviembre de 2006. PowerShell para versiones anteriores de Windows se lanzó el 30 de enero de 2007. [14] El desarrollo de PowerShell v2.0 comenzó antes de PowerShell v1 .0 enviado. Durante el desarrollo, Microsoft envió tres avances tecnológicos comunitarios (CTP) . Microsoft puso estas versiones a disposición del público. La última versión de CTP de Windows PowerShell v2.0 estuvo disponible en diciembre de 2008.
PowerShell v2.0 se completó y se lanzó a la 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 para plataformas de 32 y 64 bits. [15] En una edición de octubre de 2009 de TechNet Magazine , Microsoft calificó el dominio de PowerShell como "la habilidad más importante que un administrador de Windows necesitará en los próximos años". [dieciséis]
Windows 10 envió un marco de prueba para PowerShell. [17]
El 18 de agosto de 2016, Microsoft anunció [18] que había hecho PowerShell de código abierto y multiplataforma con soporte para Windows, macOS , CentOS y Ubuntu . [5] El código fuente se publicó en GitHub . [19] El cambio al código abierto creó una segunda encarnación de PowerShell llamada "PowerShell Core", que se ejecuta en .NET Core . Es distinto de "Windows PowerShell", que se ejecuta en .NET Framework completo . [20] A partir de la versión 5.1, PowerShell Core se incluye con Windows Server 2016 Nano Server . [21] [22]
Diseño
Los desarrolladores de PowerShell basaron la gramática central de la herramienta en la de POSIX 1003.2 KornShell . [23]
Windows PowerShell puede ejecutar cuatro tipos de comandos con nombre: [24]
- 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 mostrar su salida. La interfaz de usuario ofrece finalización de pestañas personalizable . 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 comandos. Al ejecutar un cmdlet, el trabajo de vincular el valor del argumento al parámetro lo realiza el propio PowerShell, pero para los ejecutables externos, el ejecutable externo analiza los argumentos independientemente de la interpretación de PowerShell. [ cita requerida ]
El PowerShell Extended Type System ( ETS ) se basa en el sistema de tipos .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, además de especificar un formato personalizado y un comportamiento de clasificación. Estas vistas se asignan al objeto original mediante archivos de configuración basados en XML . [25]
Cmdlets
Los cmdlets son comandos especializados en el entorno de PowerShell que implementan funciones específicas. Estos son los comandos nativos de la pila de PowerShell. Los cmdlets siguen un patrón de nomenclatura Verbo - Sustantivo , como Get-ChildItem , que lo convierte en un código autodocumentado . [26] Los cmdlets generan sus resultados como objetos y también pueden recibir objetos como entrada, lo que los hace adecuados para su uso como destinatarios en una canalización. Si un cmdlet genera varios objetos, cada objeto de la colección se transmite a través de toda la canalización antes de que se procese el siguiente objeto. [26]
Los cmdlets son clases de .NET especializadas , que el tiempo de ejecución de PowerShell crea instancias e invoca en el momento de la ejecución . Los cmdlets derivan de Cmdlet
o de PSCmdlet
, este último se usa cuando el cmdlet necesita interactuar con el tiempo de ejecución de PowerShell. [26] Estas clases base especifican ciertos métodos - BeginProcessing()
, ProcessRecord()
y EndProcessing()
- que la implementación del cmdlet anula para proporcionar la funcionalidad. Siempre que se ejecuta un cmdlet, PowerShell invoca estos métodos en secuencia, y ProcessRecord()
se los llama si recibe una entrada de canalización. [27] Si se canaliza una colección de objetos, el método se invoca para cada objeto de la colección. La clase que implementa el cmdlet debe tener uno .NET atributo - CmdletAttribute
- que especifica el verbo y el sustantivo que componen el nombre del cmdlet. Los verbos comunes se proporcionan como enumeración . [28] [29]
Si un cmdlet recibe una entrada de canalización o una entrada de parámetro de línea de comandos, debe haber 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 la canalización, que se guarda mediante la implementación del mutador en las variables de clase. A continuación, se hace referencia a estos valores mediante los métodos que implementan la funcionalidad. Las propiedades que se asignan a los parámetros de la línea de comandos están marcadas con ParameterAttribute
[30] y se establecen antes de la llamada a BeginProcessing()
. Aquellos que se asignan a la entrada de la tubería también están flanqueados por ParameterAttribute
, pero con el ValueFromPipeline
conjunto de parámetros de atributo. [31]
La implementación de estas clases de cmdlet puede hacer referencia a cualquier API .NET y puede estar en cualquier lenguaje .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 resultantes en la canalización. Los cmdlets pueden usar las API de acceso a datos .NET directamente o usar la infraestructura de PowerShell de los proveedores de PowerShell , que hacen que los almacenes de datos sean direccionables mediante rutas únicas . Los almacenes de datos se exponen utilizando letras de unidad y jerarquías dentro de ellos, direccionadas como directorios. Windows PowerShell se envía con proveedores para el sistema de archivos , el registro , el almacén de certificados , así como los espacios de nombres para los alias de comandos, las variables y las funciones. [32] Windows PowerShell también incluye varios cmdlets para administrar varios sistemas de Windows , incluido el sistema de archivos , o usar el Instrumental de administración de Windows para controlar los 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. [ cita requerida ]WriteObject()
El número de cmdlets generalmente ha aumentado con cada versión:
Versión | Cmdlets |
---|---|
Windows PowerShell 1.0 | 129 [33] |
Windows PowerShell 2.0 | 632 [34] |
Windows PowerShell 3.0 | alrededor de 1,000 [35] |
Windows PowerShell 4.0 | ? |
Windows PowerShell 5.0 | alrededor de 1.300 [36] |
Windows PowerShell 5.1 | 1586 [ cita requerida ] |
PowerShell Core 6.0 | ? |
PowerShell Core 6.1 | ? |
PowerShell Core 6.2 | ? |
PowerShell 7.0 | 1507 [ cita requerida ] |
PowerShell 7.1 | ? |
Tubería
PowerShell implementa el concepto de canalización , que permite canalizar la salida de un cmdlet a otro cmdlet como entrada. Por ejemplo, la salida del Get-Process
cmdlet podría canalizarse al Where-Object
para filtrar cualquier proceso que tenga menos de 1 MB de memoria paginada , y luego al Sort-Object
cmdlet (p. Ej., Para ordenar los objetos por número de identificadores), y finalmente al Select-Object
cmdlet para seleccionar solo los primeros diez procesos según el número de identificadores. [ cita requerida ]
Al igual que con las canalizaciones de Unix , las canalizaciones de PowerShell pueden construir comandos complejos, utilizando el |
operador para conectar etapas. Sin embargo, la canalización de PowerShell se diferencia de las canalizaciones de Unix en que las etapas se ejecutan dentro del tiempo de ejecución de PowerShell en lugar de como un conjunto de procesos coordinados por el sistema operativo . Además, los objetos .NET estructurados, en lugar de los flujos de bytes , se pasan de una etapa a la siguiente. El uso de objetos y la ejecución de etapas dentro del tiempo de ejecución de PowerShell elimina la necesidad de serializar estructuras de datos o de extraerlas analizando explícitamente la salida de texto. [37] Un objeto también puede encapsular ciertas funciones que trabajan con los datos contenidos, que quedan disponibles para el uso del comando del destinatario. [38] [39] Para el último cmdlet de una canalización, PowerShell canaliza automáticamente su objeto de salida al Out-Default
cmdlet, que transforma los objetos en una secuencia de objetos de formato y luego los muestra en la pantalla. [40] [41]
Debido a que todos los objetos de PowerShell son objetos .NET, comparten un .ToString()
método, que recupera la representación de texto de los datos en un objeto. Además, PowerShell permite especificar definiciones de formato, por lo que la representación de texto 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, recibe un flujo de texto que representa el objeto, en lugar de integrarse directamente con el sistema de tipos de PowerShell. [42] [43] [44]
Scripting
Windows PowerShell incluye un lenguaje de secuencias de comandos escrito dinámicamente que puede implementar operaciones complejas usando cmdlets de manera imperativa . Las variables Apoya lengua scripting, funciones, ramificación ( if-then-else
), bucles ( while
, do
, for
, y foreach
), error estructurado / manejo de excepciones y cierres / expresiones lambda , [45] , así como la 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 cmdlets. Las cadenas pueden encerrarse entre comillas simples o entre comillas dobles: cuando se utilizan comillas dobles, las variables se expandirán incluso si están entre comillas. Incluir la ruta a un archivo entre llaves precedidas por un signo de dólar (como en ${C:\foo.txt}
) 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 ser almacenado. [ cita requerida ]
Se puede acceder a los miembros de 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. [46] PowerShell también proporciona matrices y matrices asociativas . El lenguaje de secuencias de comandos de PowerShell también evalúa las expresiones aritméticas ingresadas en la línea de comandos inmediatamente y analiza las abreviaturas comunes, como GB, MB y KB. [47] [48]
Usando la function
palabra clave, PowerShell proporciona la creación de funciones. Una función simple tiene el siguiente aspecto general: [49]
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 conmutador y parámetros dinámicos. [49]
función Verbo-Sustantivo{ PARAM ( # Definición de parámetros estáticos ) dynamicparam { # Definición de parámetros dinámicos } comenzar { # Conjunto de instrucciones para ejecutar al inicio de la canalización } proceso { # Conjuntos de instrucciones principales, ejecutados para cada elemento de la canalización } end { # Conjunto de instrucciones para ejecutar al final de la canalización }}
La función definida se invoca en cualquiera de las siguientes formas: [49]
Nombre valor1 valor2 verbo-Nombre -Param1 valor1 -Param2 valor2
PowerShell permite llamar a cualquier método .NET estático proporcionando sus espacios de nombres entre corchetes ( []
) y luego usando un par de dos puntos ( ::
) para indicar el método estático. [50] Por ejemplo:
[Consola] :: WriteLine ( "PowerShell" )
Hay docenas de formas de objetos en PowerShell. Una vez creado, se puede acceder a las propiedades y métodos de instancia de un objeto utilizando la .
notación. [50]
PowerShell acepta cadenas , tanto sin formato como con escape . Una cadena encerrada entre comillas simples es una cadena sin formato, mientras que una cadena encerrada entre comillas dobles es una cadena de escape. PowerShell trata las comillas rectas y rizadas como equivalentes. [51]
PowerShell admite la siguiente lista de caracteres especiales: [52]
Secuencia | Significado |
---|---|
`0 | Nulo |
un | Alerta |
`b | Retroceso |
`e | Escapar |
`f | Alimentación de formulario |
n | Nueva línea |
`r | Retorno de carro |
t | Pestaña horizontal |
`u {x} | Secuencia de escape Unicode |
`v | Pestaña vertical |
-% | Trate a cualquier personaje desde este punto en adelante literalmente |
Para el manejo de errores, PowerShell proporciona un mecanismo de manejo de excepciones basado en .NET . En caso de errores, Exception
se lanzan objetos que contienen información sobre el error ( objeto), que se capturan utilizando la try ... catch
construcción (aunque también trap
se admite una construcción). PowerShell se puede configurar para reanudar la ejecución de forma silenciosa, sin lanzar la excepción; esto se puede hacer con un solo comando, una sola sesión o de forma permanente. [53]
Se puede hacer que los scripts escritos con PowerShell persistan entre sesiones en un .ps1
archivo o en un .psm1
archivo (este último se usa para implementar un módulo). Posteriormente, se puede utilizar el script completo o las funciones individuales del script. Los scripts y las funciones operan de forma análoga a los cmdlets, ya que se pueden usar como comandos en canalizaciones y se pueden vincular parámetros a ellos. Los objetos de canalización se pueden pasar entre funciones, scripts y cmdlets sin problemas. Para evitar la ejecución involuntaria de scripts, la ejecución de scripts está deshabilitada de forma predeterminada y debe habilitarse explícitamente. [54] La habilitación de scripts se puede realizar a nivel de sistema, usuario o sesión. Los scripts de PowerShell se pueden firmar para verificar su integridad y están sujetos a Code Access Security . [55]
El lenguaje de secuencias de comandos de PowerShell admite la notación de prefijo binario similar a la notación científica admitida por muchos lenguajes de programación de la familia C. [56]
Hospedaje
También se puede usar PowerShell integrado en una aplicación de administración, que usa el tiempo de ejecución de PowerShell para implementar la funcionalidad de administración. Para esto, PowerShell proporciona una API de hospedaje administrado . A través de las API, la aplicación puede crear una instancia de un espacio de ejecución (una instancia del tiempo de ejecución de PowerShell), que se ejecuta en el proceso de la aplicación y se expone como un objeto. [6] El estado del espacio de ejecución está encerrado en un objeto. Cuando se crea el espacio de ejecución, el tiempo de ejecución de Windows PowerShell inicializa la creación de instancias, incluida la inicialización de los proveedores y la enumeración de los cmdlets, y actualiza el objeto en consecuencia. Luego, el Runspace debe abrirse para procesamiento sincrónico o procesamiento asincrónico. Después de eso, se puede usar para ejecutar comandos. [ cita requerida ]Runspace
SessionState
SessionState
Para ejecutar un comando, se Pipeline
debe crear una canalización (representada por un objeto) y asociarla con el espacio de ejecución. A continuación, el objeto de canalización se rellena con los cmdlets que forman la canalización. Para operaciones secuenciales (como en un script de PowerShell), se crea un objeto Pipeline para cada declaración y se anida dentro de otro objeto Pipeline. [6] Cuando se crea una tubería, Windows PowerShell invoca el procesador de tubería, que resuelve los cmdlets en sus respectivos conjuntos (el procesador de comandos ) y añade una referencia a ellos para la tubería, y los asocia con InputPipe
, OutputPipe
y ErrorOutputPipe
objetos, para representar el conexión con la tubería. Los tipos se verifican y los parámetros se enlazan mediante reflexión . [6] Una vez que la tubería está configurado, el anfitrión llama al Invoke()
método para ejecutar los comandos, o su equivalente asíncrono, InvokeAsync()
. Si la canalización tiene el Write-Host
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 en sí. [ cita requerida ]
Microsoft Exchange Server 2007 utiliza las API de hospedaje para proporcionar su GUI de administración. Cada operación expuesta en la GUI se asigna a una secuencia de comandos de PowerShell (o canalizaciones). El anfitrión crea la canalización y la ejecuta. De hecho, la propia consola interactiva de PowerShell es un host de PowerShell, que interpreta los scripts ingresados en la línea de comandos y crea los Pipeline
objetos necesarios y los invoca. [ cita requerida ]
Configuración de estado deseada
DSC permite especificar de forma declarativa cómo se debe configurar un entorno de software. [57]
Al ejecutar una configuración , DSC se asegurará de que el sistema obtenga el estado descrito en la configuración. Las configuraciones de DSC son idempotentes. El Administrador de configuración local (LCM) sondea periódicamente el sistema utilizando el flujo de control descrito por los recursos (piezas imperativas de DSC) para asegurarse de que se mantenga el estado de una configuración.
Versiones
Inicialmente usando el nombre en clave "Monad", PowerShell se mostró públicamente por primera vez en la Conferencia de Desarrolladores Profesionales en octubre de 2003 en Los Ángeles. Todas las versiones principales siguen siendo compatibles, y cada versión principal ha presentado compatibilidad con versiones anteriores.
Windows PowerShell 1.0
PowerShell 1.0 se lanzó en noviembre de 2006 para Windows XP SP2 , Windows Server 2003 SP1 y Windows Vista . [58] Es un componente opcional de Windows Server 2008 .
Windows PowerShell 2.0
PowerShell 2.0 está integrado con Windows 7 y Windows Server 2008 R2 [59] y está disponible para Windows XP con Service Pack 3, Windows Server 2003 con Service Pack 2 y Windows Vista con Service Pack 1. [60] [61]
PowerShell v2 incluye cambios en el lenguaje de secuencias de comandos y la API de hospedaje, además de incluir más de 240 cmdlets nuevos. [62] [63]
Las nuevas características de PowerShell 2.0 incluyen: [64] [65] [66]
- Comunicación remota de PowerShell : con WS-Management , PowerShell 2.0 permite invocar scripts y cmdlets en una máquina remota o en un gran conjunto de máquinas remotas.
- Trabajos en segundo plano : también llamado PSJob , permite invocar una secuencia de comandos (secuencia de comandos) o canalización de forma asincrónica. Los trabajos se pueden ejecutar en la máquina local o en varias máquinas remotas. Un cmdlet interactivo en un PSJob bloquea la ejecución del trabajo hasta que se proporcione la entrada del usuario.
- Transacciones : habilite el cmdlet y los desarrolladores podrán realizar operaciones transaccionales . PowerShell 2.0 incluye cmdlets de transacciones para iniciar, confirmar y revertir una PSTransaction , así como funciones para administrar y dirigir la transacción al cmdlet participante y las operaciones del proveedor. El proveedor de registro de PowerShell admite transacciones.
- Funciones avanzadas : son cmdlets escritos con el lenguaje de secuencias de comandos de PowerShell. Inicialmente denominada "cmdlets de secuencia de comandos", esta función se renombró posteriormente como "funciones avanzadas". [67]
- SteppablePipelines : Esto permite al usuario el control cuando los
BeginProcessing()
,ProcessRecord()
yEndProcessing()
se denominan funciones de un cmdlet. - Módulos : esto permite a los desarrolladores y administradores de scripts organizar y particionar scripts de PowerShell en unidades autónomas y reutilizables. El código de un módulo se ejecuta en su propio contexto autónomo y no afecta el estado fuera del módulo. Los módulos pueden definir un entorno de espacio de ejecución restringido mediante un script. Tienen un estado persistente así como miembros públicos y privados.
- Lenguaje de datos : un subconjunto específico del dominio del lenguaje de secuencias de comandos de PowerShell que permite desacoplar las definiciones de datos de las secuencias de comandos y permite importar recursos de cadenas localizados en la secuencia de comandos en tiempo de ejecución ( internacionalización de secuencias de comandos ).
- Depuración de scripts : permite establecer puntos de interrupción en un script o función de PowerShell. Los puntos de interrupción se pueden establecer en líneas, líneas y columnas, comandos y acceso de lectura o escritura de variables. Incluye un conjunto de cmdlets para controlar los puntos de interrupción mediante un script.
- Eventing : esta función permite escuchar, reenviar y actuar sobre los eventos de administración y del sistema. Los eventos permiten que los hosts de PowerShell sean notificados sobre los cambios de estado en sus entidades administradas. También permite que los scripts de PowerShell se suscriban a ObjectEvents , PSEvents y WmiEvents y los procesen de forma sincrónica y asincrónica.
- Entorno de scripting integrado (ISE) de Windows PowerShell : PowerShell 2.0 incluye un host PowerShell basado en GUI que proporciona depurador integrado, resaltado de sintaxis , finalización de pestañas y hasta 8 consolas habilitadas para PowerShell Unicode (Runspaces) en una interfaz de usuario con pestañas, así como la capacidad para ejecutar solo las partes seleccionadas en un script.
- Transferencia de archivos de red : soporte nativo para transferencias priorizadas, limitadas y asincrónicas de archivos entre máquinas que utilizan el Servicio de transferencia inteligente en segundo plano (BITS). [68]
- Nuevos cmdlets : incluido
Out-GridView
, que muestra datos tabulares en el objeto WPF GridView , en los sistemas que lo permiten y si ISE está instalado y habilitado. - Los nuevos operadores :
-Split
,-Join
, y Splatting (@
) los operadores. - Manejo de excepciones con Try-Catch-Finalmente : a diferencia de otros lenguajes .NET, esto permite múltiples tipos de excepción para un solo bloque catch.
- Here-Strings anidables : PowerShell Here-Strings se ha mejorado y ahora puede anidar. [69]
- Comentarios de bloque : PowerShell 2.0 admite comentarios de bloque usando
<#
y#>
como delimitadores. [70] - Nuevas API : las nuevas API van desde entregar más control sobre el analizador de PowerShell y el tiempo de ejecución al host, hasta crear y administrar una colección de espacios de ejecución (
RunspacePools
), así como la capacidad de crear espacios de ejecución restringidos que solo permiten invocar un subconjunto configurado de PowerShell. . Las nuevas API también admiten la participación en una transacción administrada por PowerShell
Windows PowerShell 3.0
PowerShell 3.0 está integrado con Windows 8 y con Windows Server 2012 . Microsoft también ha hecho que PowerShell 3.0 esté disponible para Windows 7 con Service Pack 1, para Windows Server 2008 con Service Pack 1 y para Windows Server 2008 R2 con Service Pack 1. [71] [72]
PowerShell 3.0 es parte de un paquete más grande, Windows Management Framework 3.0 (WMF3), que también contiene el servicio WinRM para admitir la comunicación remota. [72] Microsoft hizo varias versiones de Community Technology Preview de WMF3. El 2 de diciembre de 2011 se publicó una versión preliminar de la tecnología comunitaria 2 (CTP 2) de Windows Management Framework 3.0. [73] Windows Management Framework 3.0 se lanzó para su disponibilidad general en diciembre de 2012 [74] y se incluye con Windows 8 y Windows Server. 2012 por defecto. [75]
Las nuevas características de PowerShell 3.0 incluyen: [72] [76] : 33–34
- Trabajos programados : los trabajos se pueden programar para que se ejecuten en una fecha y hora preestablecidas mediante la infraestructura del Programador de tareas de Windows .
- Conectividad de la sesión : las sesiones se pueden desconectar y volver a conectar. Las sesiones remotas se han vuelto más tolerantes a las fallas temporales de la red.
- Escritura de código mejorada : se agregan finalización de código (IntelliSense) y fragmentos . PowerShell ISE permite a los usuarios utilizar cuadros de diálogo para completar los parámetros de los cmdlets de PowerShell.
- Soporte de delegación : las tareas administrativas se pueden delegar a usuarios que no tienen permisos para ese tipo de tarea, sin otorgarles permisos adicionales perpetuos.
- Actualización de la ayuda : la documentación de ayuda se puede actualizar mediante el comando Actualizar-Ayuda.
- Detección automática de módulos : los módulos se cargan implícitamente cada vez que se invoca un comando de ese módulo. La finalización de código también funciona para módulos descargados.
- Nuevos comandos : se agregaron decenas de nuevos módulos, incluida la funcionalidad para administrar discos
get-WmiObject win32_logicaldisk
, volúmenes, firewalls, conexiones de red e impresoras, que anteriormente se realizaban a través de WMI. [ se necesita más explicación ]
Windows PowerShell 4.0
PowerShell 4.0 está integrado con Windows 8.1 y con Windows Server 2012 R2 . Microsoft también ha hecho que PowerShell 4.0 esté disponible para Windows 7 SP1 , Windows Server 2008 R2 SP1 y Windows Server 2012 . [77]
Las nuevas características de PowerShell 4.0 incluyen:
- Configuración de estado deseada : [78] [79] [80] Extensiones de lenguaje declarativo y herramientas que permiten la implementación y 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 los servidores Windows, la política de ejecución predeterminada es ahora
RemoteSigned
. - Save-Help : la ayuda ahora se puede guardar para los módulos que están instalados en computadoras remotas.
- Depuración mejorada : el depurador ahora admite la depuración de flujos de trabajo, la ejecución remota de scripts y la conservación de sesiones de depuración en las reconexiones de sesiones de PowerShell.
- -PipelineVariable switch : un nuevo parámetro ubicuo para exponer el objeto de canalización actual como una variable con fines de programación
- Diagnósticos de red para administrar conmutadores de red virtualizados físicos y de Hyper-V
- La sintaxis del método Where y ForEach proporciona un método alternativo de filtrado e iteración sobre objetos.
Windows PowerShell 5.0
Windows Management Framework (WMF) 5.0 RTM, que incluye PowerShell 5.0, se volvió a lanzar a la web el 24 de febrero de 2016, luego de una versión inicial con un error grave. [81]
Entre las funciones clave se incluyen:
- La nueva
class
palabra clave que crea clases para programación orientada a objetos - La nueva
enum
palabra clave que crea enumeraciones OneGet
cmdlets para admitir el administrador de paquetes Chocolatey [82]- Ampliación del soporte para la gestión de conmutadores a conmutadores de red de capa 2 . [83]
- Depuración de trabajos en segundo plano de PowerShell e instancias de PowerShell alojadas en otros procesos (cada uno de los cuales se denomina "espacio de ejecución")
- Administrador de configuración local (LCM) de configuración de estado deseado (DSC) versión 2.0
- Configuraciones parciales DSC
- Metaconfiguraciones de DSC Local Configuration Manager
- Creación de recursos DSC mediante clases de PowerShell
Windows PowerShell 5.1
Se lanzó junto con la Actualización de aniversario de Windows 10 [84] el 2 de agosto de 2016 y en Windows Server 2016 . [85] PackageManagement ahora admite proxies, PSReadLine ahora admite ViMode y se agregaron dos nuevos cmdlets: Get-TimeZone y Set-TimeZone. El módulo LocalAccounts permite agregar / eliminar cuentas de usuarios locales. [86] Se lanzó una versión preliminar de PowerShell 5.1 para Windows 7, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012 y Windows Server 2012 R2 el 16 de julio de 2016, [87] y se publicó el 19 de enero de 2017. [88]
PowerShell 5.1 es la primera versión que viene en dos ediciones de "Desktop" y "Core". La edición "Desktop" es la continuación del Windows PowerShell tradicional que se ejecuta en la pila completa de .NET Framework. La edición "Core" se ejecuta en .NET Core y se incluye con Windows Server 2016 Nano Server. A cambio de un espacio más pequeño, este último carece de algunas características como los cmdlets para administrar el portapapeles o unir una computadora a un dominio, cmdlets de WMI versión 1, cmdlets de registro de eventos y perfiles. [22] Esta fue la versión final de PowerShell hecha exclusivamente para Windows.
PowerShell Core 6
PowerShell Core 6.0 se anunció por primera vez el 18 de agosto de 2016, cuando Microsoft dio a conocer PowerShell Core y su decisión de hacer que el producto sea multiplataforma , independiente de Windows, gratuito y de código abierto. [5] Logró la disponibilidad general el 10 de enero de 2018 para Windows, macOS y Linux . [89] Tiene su propio ciclo de vida de soporte y se adhiere a la política de ciclo de vida de Microsoft que se introduce con Windows 10: solo se admite la última versión de PowerShell Core. Microsoft espera lanzar una versión menor de PowerShell Core 6.0 cada seis meses. [90]
El cambio más significativo en esta versión de PowerShell es la expansión a las otras plataformas. Para los administradores de Windows, esta versión de PowerShell no incluye ninguna característica nueva importante. En una entrevista con la comunidad el 11 de enero de 2018, se le pidió al equipo de PowerShell que enumerara las 10 cosas más interesantes que le sucederían a un profesional de TI de Windows que migraría de Windows PowerShell 5.1 a PowerShell Core 6.0; en respuesta, Angel Calvo de Microsoft solo pudo nombrar dos: multiplataforma y código abierto. [91]
Según Microsoft, una de las nuevas características de PowerShell 6.1 es "Compatibilidad con más de 1900 cmdlets existentes en Windows 10 y Windows Server 2019 ". [92] Aún así, no se pueden encontrar detalles de estos cmdlets en la versión completa del registro de cambios. [93] Microsoft profesa más tarde que este número era insuficiente ya que PowerShell Core no reemplazó a Windows PowerShell 5.1 y ganó tracción en Windows. [94] Sin embargo, fue popular en Linux. [94]
PowerShell Core 6.2 se centra principalmente en mejoras de rendimiento, corrección de errores y mejoras de cmdlet y lenguaje más pequeñas que mejoraron la productividad de los desarrolladores. [95]
PowerShell 7
PowerShell 7 es el reemplazo de los productos PowerShell Core 6.x, así como de Windows PowerShell 5.1, que es la última versión compatible de Windows PowerShell. [96] [94] El enfoque en el desarrollo era hacer de PowerShell 7 un reemplazo viable para Windows PowerShell 5.1, es decir, tener casi la misma paridad con Windows PowerShell en términos de compatibilidad con los módulos que se envían con Windows. [97]
Las nuevas características de PowerShell 7 incluyen: [98]
- El
-Parallel
conmutador delForEach-Object
cmdlet para ayudar a manejar el procesamiento paralelo - Casi paridad con Windows PowerShell en términos de compatibilidad con módulos integrados de Windows
- Una nueva vista de error
- El
Get-Error
cmdlet - 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 que solo asigna un valor a una variable cuando el valor existente de la variable es nulo - El
??
operador de la coalescencia nula - Multiplataforma
Invoke-DscResource
(experimental) - Retorno del
Out-GridView
cmdlet - Retorno del
-ShowWindow
interruptor para elGet-Help
Comparación de cmdlets con comandos similares
La siguiente tabla contiene una selección de los cmdlets que se incluyen con PowerShell, con comandos similares en otros intérpretes de línea de comandos conocidos. Muchos de estos comandos similares vienen definidos de fábrica como alias dentro de PowerShell, lo que facilita que las personas familiarizadas con otros shells comunes comiencen a trabajar.
PowerShell (cmdlet) | PowerShell (alias) | Símbolo del sistema de Windows | Shell de Unix | Descripción |
---|---|---|---|---|
Get-ChildItem | gci, dir, ls | dir | ls | Enumera todos los archivos y carpetas en la carpeta actual o dada |
Conexión de prueba [a] | silbido | silbido | silbido | Envía solicitudes de eco ICMP a la máquina especificada desde la máquina actual, o indica a otra máquina que lo haga |
Obtener el contenido | gc, tipo, gato | tipo | gato | Obtiene el contenido de un archivo |
Get-Command | gcm | ayuda | tipo , que , compgen | Enumera los comandos disponibles |
Consigue ayuda | ayuda, hombre | ayuda | a propósito , hombre | Imprime la documentación de un comando en la consola |
Anfitrión claro | cls, claro | cls | claro | Borra la pantalla [b] |
Copiar artículo | cpi, copiar, cp | copiar , xcopy , robocopy | cp | Copia archivos y carpetas a otra ubicación |
Mover elemento | mi, mover, mv | moverse | mv | Mueve archivos y carpetas a una nueva ubicación |
Remover el artículo | ri, del, borrar, rmdir, rd, rm | del , borrado , rmdir , rd | rm , rmdir | Elimina archivos o carpetas |
Cambiar nombre de elemento | rni, ren, mv | ren , renombrar | mv | Cambia el nombre de un solo archivo, carpeta, enlace físico o enlace simbólico |
Obtener ubicación | gl, cd, pwd | CD | pwd | Muestra la ruta de trabajo (carpeta actual) |
Ubicación emergente | popd | popd | popd | Cambia la ruta de trabajo a la ubicación que se colocó más recientemente en la pila. |
Empujar-Ubicación | empujado | empujado | empujado | Almacena la ruta de trabajo en la pila |
Escoger localización | sl, cd, chdir | cd , chdir | CD | Cambia la ruta de trabajo |
Objeto en T | tee | N / A | tee | Canaliza la entrada a un archivo o variable, pasando la entrada a lo largo de la canalización |
Salida de escritura | echo, escribe | eco | eco | Imprime cadenas u otros objetos en la salida estándar |
Obtener-proceso | gps, ps | tlist, [c] lista de tareas [d] | PD | Enumera todos los procesos en ejecución |
Proceso de parada | spps, matar | matar , [c] taskkill [d] | matar [e] | Detiene un proceso en ejecución |
Seleccionar cadena | sls | Findstr | encontrar , grep | Imprime líneas que coinciden con un patrón |
Establecer variable | sv, conjunto | colocar | env, exportar, establecer, setenv | Crea o altera el contenido de una variable de entorno. |
Invoke-WebRequest | iwr, | rizo [100] | wget , rizo | Obtiene contenidos de una página web en Internet |
Notas
- ^ Si bien elcomando ping externopermanece disponible para PowerShell, la salida de Test-Connection es un objeto estructuradoque se puede inspeccionar mediante programación. [99]
- ^ Clear-Host se implementa como una función de PowerShell predefinida.
- ^ a b Disponible en Windows NT 4 , Kit de recursos de Windows 98 , Herramientas de soporte de Windows 2000
- ^ a b Introducido en Windows XP Professional Edition
- ^ También se utiliza en UNIX para enviar un proceso cualquier señal , la señal "Terminar" es simplemente la predeterminada
- ^
curl
y loswget
alias están ausentes en PowerShell Core, para no interferir con la invocación de comandos nativos con nombres similares.
Extensiones de nombre de archivo
Extensión | Descripción |
---|---|
.ps1 | Archivo de secuencia de comandos [101] |
.psd1 | Archivo de manifiesto del módulo; generalmente viene con un módulo de secuencia de comandos o un módulo binario [102] |
.psm1 | Archivo de módulo de secuencia de comandos [103] |
.dll | Archivo de módulo binario [a] compatible con DLL [104] |
.ps1xml | Archivo de definiciones de formato y tipo [44] [105] |
.xml | Archivo de datos serializados [b] compatible con XML [106] |
.psc1 | Archivo de consola [107] |
.pssc | Archivo de configuración de sesión [108] |
.psrc | Archivo de capacidad de función [109] |
- ^ La biblioteca de vínculos dinámicos (DLL) no es un formato exclusivo de PowerShell. Es un formato genérico para almacenarel código de ensamblado .NET compilado.
- ^ XML no es un formato exclusivo de PowerShell. Es un formato de intercambio de información popular.
Soporte de aplicaciones
Solicitud | Versión | Cmdlets | Proveedor | GUI de gestión |
---|---|---|---|---|
Servidor de intercambio | 2007 | 402 | sí | sí |
Servidor de windows | 2008 | sí | sí | No |
Microsoft SQL Server | 2008 | sí | sí | No |
Microsoft SharePoint | 2010 | sí | sí | No |
Administrador de configuración de System Center | 2012 R2 | 400+ | sí | No |
Gerente de operaciones de System Center | 2007 | 74 | sí | No |
Administrador de máquinas virtuales de System Center | 2007 | sí | sí | sí |
Gerente de protección de datos de System Center | 2007 | sí | No | No |
Servidor de clúster de cómputo de Windows | 2007 | sí | sí | No |
Microsoft Transporter Suite para Lotus Domino [110] | 08.02.0012 | 47 | No | No |
Microsoft PowerTools para Open XML [111] | 1.0 | 33 | No | No |
IBM WebSphere MQ [112] | 6.0.2.2 | 44 | No | No |
Complementos de IoT Core [113] | 74 | Desconocido | Desconocido | |
Shell de administración de Quest para Active Directory [114] | 1,7 | 95 | No | No |
Comando Specops del software de operaciones especiales [115] | 1.0 | sí | No | sí |
VMware vSphere PowerCLI [116] | 6.5 R1 | 500+ | sí | sí |
Servicios de información de Internet [117] | 7.0 | 54 | sí | No |
Centro de solución de problemas de Windows 7 [118] | 6.1 | sí | No | sí |
Kit de herramientas de implementación de Microsoft [119] | 2010 | sí | sí | sí |
Kit de herramientas de PowerShell de NetApp [120] [121] | 4.2 | 2000+ | sí | sí |
Programador JAMS - Sistema de gestión y acceso a trabajos [122] | 5,0 | 52 | sí | sí |
UIAutomation [123] | 0,8 | 432 | No | No |
Dell Equallogic [124] | 3,5 | 55 | No | No |
LOGINventory [125] | 5.8 | sí | sí | sí |
SePSX [126] | 0.4.1 | 39 | No | No |
Implementación alternativa
Un proyecto llamado Pash , un juego de palabras con el conocido shell de Unix " bash ", ha sido una reimplementación de código abierto y multiplataforma de PowerShell a través del marco Mono . [127] Pash fue creado por Igor Moochnick, escrito en C # y publicado bajo la Licencia Pública General GNU . El desarrollo de Pash se estancó en 2008, se reinició en GitHub en 2012, [128] y finalmente cesó en 2016 cuando PowerShell se convirtió oficialmente en código abierto y multiplataforma. [129]
Ver también
- Modelo de información común (informática)
- Comparación de proyectiles de comando
- Comparación de lenguajes de programación
- Gestión empresarial basada en web
- Host de secuencia de comandos de Windows
- Terminal de Windows
Referencias
- ^ "PowerShell / PowerShell" . GitHub . Consultado el 11 de marzo de 2021 .
- ^ "Versión 7.2.0-preview.5 de PowerShell" . Repositorio de GitHub PowerShell . Consultado el 14 de abril de 2021 .
- ^ "¡PowerShell para todos los sistemas!" . 12 de junio de 2017 - a través de GitHub.
- ^ Snover, Jeffrey (25 de mayo de 2008). "PowerShell y WPF: WTF" . Blog de Windows PowerShell . Microsoft.
- ^ a b c Bright, Peter (18 de agosto de 2016). "PowerShell es la última versión de código abierto de Microsoft, que llegará a Linux, OS X" . Ars Technica . Condé Nast . Archivado desde el original el 9 de abril de 2020 . Consultado el 12 de mayo de 2020 .
- ^ a b c d e "Cómo funciona Windows PowerShell" . Red de desarrolladores de Microsoft . Microsoft . Consultado el 27 de noviembre de 2007 .
- ^ Truher, Jim (diciembre de 2007). "Amplíe Windows PowerShell con comandos personalizados" . Revista MSDN . Microsoft. Archivado desde el original el 6 de octubre de 2008.
- ^ Lowe, Scott (4 de enero de 2007). "Exchange 2007: acostumbrarse a la línea de comandos" . TechRepublic . CBS Interactive . Archivado desde el 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 (publicación de blog). Microsoft. Archivado desde el original el 15 de noviembre de 2007 . Consultado el 13 de noviembre de 2007 .
- ^ Dragan, Richard V. (23 de abril de 2003). "Windows Server 2003 ofrece mejoras en todos los aspectos" . Reseñas. Revista de PC . Ziff Davis .
Una característica destacada aquí 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).
- ^ 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" . Ser continuo (Podcast). Heavybit . Consultado el 14 de septiembre de 2017 .
- ^ "Ha llegado Windows PowerShell (Monad)" . 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 (publicación 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 desde el original el 13 de octubre de 2013.
- ^ Posey, Brien (6 de octubre de 2009). "10 razones por las que debería aprender a utilizar PowerShell" . TechRepublic . Consultado el 2 de abril de 2021 .
- ^ "¿Qué es Pester 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). "PowerShell de fuentes abiertas de Microsoft; lo lleva a Linux y Mac OS X" . ZDNet . CBS Interactive .
- ^ a b "PowerShell en Nano Server" . TechNet . Microsoft . 20 de octubre de 2016.
- ^ Payette, Bruce (2007). Windows PowerShell en acción . Manning Pubs Co Series. Manning. pag. 27. ISBN 9781932394900. Consultado el 22 de julio de 2016 .
El lenguaje central de PowerShell se basa en la gramática POSIX 1003.2 para el shell de Korn .
- ^ "about_Command_Precedence" . TechNet . Microsoft . 8 de mayo de 2014.
- ^ "Sistema de tipo extendido de Windows PowerShell" . Consultado el 28 de noviembre de 2007 .
- ^ a b c "Cmdlets de Windows PowerShell" . Consultado el 28 de noviembre de 2007 .
- ^ "Creación de su primer cmdlet" . Consultado el 28 de noviembre de 2007 .
- ^ "Get-Verb" . TechNet . Microsoft . 8 de mayo de 2014.
- ^ "Descripción general del cmdlet" . 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 .
- ^ "Adición de 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-6. OCLC 829236530 .
Windows PowerShell 3.0 viene con aproximadamente 1,000 cmdlets en Windows 8
- ^ Wilson, Ed (2015). "1: Descripción general de Windows PowerShell 5.0" . Windows PowerShell paso a paso (tercera edición). Redmond, Washington: Microsoft Press . ISBN 978-1-5093-0043-3. OCLC 927112976 .
Windows PowerShell 5.0 viene con aproximadamente 1300 cmdlets en Windows 10
- ^ "Manual del propietario de Windows PowerShell: canalización y canalización en Windows PowerShell" . TechNet . Microsoft . Consultado el 27 de septiembre de 2011 .
- ^ Jones, Don (2008). "Windows PowerShell: repensar la canalización" . Microsoft TechNet . Microsoft . Consultado el 28 de noviembre de 2007 .
- ^ "Conceptos de objetos de Windows PowerShell" . Archivado desde el 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: ¿Cómo funciona realmente el formateo 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.
- ^ a b "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 .
- ^ "Introducción a las variables de Windows PowerShell" . Consultado el 28 de noviembre de 2007 .
- ^ "Conversión de bytes" . Consejo de la semana de Windows PowerShell . 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 utilizar multiplicadores de PowerShell" . Revista PowerShell .
- ^ a b c "about_Functions" . Microsoft TechNet . Microsoft . 17 de octubre de 2013 . Consultado el 15 de noviembre de 2013 .
- ^ a b "Pruebas ligeras con Windows PowerShell" . Consultado el 28 de noviembre de 2007 .
- ^ Angelopoulos, Alex; Karen, Bemowski (4 de diciembre de 2007). "PowerShell se hizo inteligente con las cotizaciones inteligentes" . Windows IT Pro . Penton Media . Consultado 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" . 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). Referencia rápida de Windows PowerShell . O'Reilly Media.
- ^ eslesar. "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). "¡Es una envoltura! ¡Lanzamiento de Windows PowerShell 1.0!" . Blog de Windows PowerShell . Microsoft .
- ^ "¡PowerShell se instalará de forma predeterminada en Windows Server 08 R2 (WS08R2) y Windows 7 (W7)!" . Blog de Windows PowerShell . Microsoft . 2008-10-28 . Consultado el 27 de septiembre de 2011 .
- ^ "¡El marco de administración de Windows ya está aquí!" . 2009-10-27 . Consultado el 30 de octubre de 2009 .
- ^ "Base de conocimientos de soporte de Microsoft: marco de administración de Windows (Windows PowerShell 2.0, WinRM 2.0 y BITS 4.0)" . Support.microsoft.com. 2011-09-23 . Consultado el 27 de septiembre de 2011 .
- ^ "574 razones por las que estamos tan orgullosos y optimistas acerca de W7 y WS08R2" . Blog de Windows PowerShell . Microsoft . 2008-10-29 . Consultado el 27 de septiembre de 2011 .
- ^ Snover, Jeffrey (2008). "PowerShell: creación de servicios web administrables" . Archivado desde el original el 13 de octubre de 2008 . Consultado el 19 de julio de 2015 .
- ^ "Novedades de CTP de PowerShell 2.0" . Consultado el 28 de noviembre de 2007 .
- ^ "Windows PowerShell V2 Community Technology Preview 2 (CTP2) - releaseNotes" . Archivado desde el original el 6 de mayo de 2008 . Consultado el 5 de mayo de 2008 .
- ^ "Diferencias entre PowerShell 1.0 y PowerShell 2.0" . Consultado el 26 de junio de 2010 .
- ^ Jones, Don (mayo de 2010). "Windows PowerShell: escribir cmdlets en secuencia de comandos" . Revista TechNet . Microsoft.
- ^ "Complemento de GoGrid: administración de servicios en la nube con PowerShell" . Blog de Windows PowerShell . Microsoft . 2008-10-14 . Consultado el 27 de septiembre de 2011 .
- ^ "Emit-XML" . Blog de Windows PowerShell . Microsoft . 2008-10-17 . Consultado el 27 de septiembre de 2011 .
- ^ "Bloquear comentarios en V2" . Blog de Windows PowerShell . Microsoft . 2008-06-14 . Consultado el 27 de septiembre de 2011 .
- ^ Lee, Thomas (13 de agosto de 2012). "¡PowerShell versión 3 es RTM!" . Debajo De Las Escaleras . Consultado el 13 de agosto de 2012 .
- ^ a b c "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 disponible para descargar" . 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" . Red de desarrolladores de Microsoft . Microsoft . Consultado el 20 de abril de 2017 .
- ^ Honeycutt, Jerry (2012). Woolley, Valerie (ed.). Presentación de Windows 8: descripció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 funciones en Windows PowerShell 4.0" . Revista PowerShell . Consultado el 26 de junio de 2013 .
- ^ "Configuración de estado deseado en Windows Server 2012 R2 PowerShell" . Canal 9 . Microsoft . 3 de junio de 2013 . Consultado el 26 de junio de 2013 .
- ^ Hall, Adrian (7 de junio de 2013). "Pensamientos de Microsoft TechEd North America" . Blogs: consejos y trucos . Splunk . Consultado el 26 de junio de 2013 .
- ^ "Los paquetes de Windows Management Framework (WMF) 5.0 RTM se han vuelto a publicar" . 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). "Vista previa de Windows Management Framework V5" . blogs.technet.com . Microsoft . Archivado desde el original el 30 de junio de 2014 . Consultado 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 - Gestión y automatización" .
- ^ "Módulo Microsoft.PowerShell.LocalAccounts" . technet.microsoft.com .
- ^ "Anuncio de Windows Management Framework (WMF) 5.1 Vista previa" .
- ^ "WMF 5.1" . Centro de descarga de Microsoft .
- ^ Aiello, Joey (11 de enero de 2018). "PowerShell Core 6.0: generalmente disponible (GA) y compatible" . Blog del equipo de PowerShell . Microsoft. Archivado desde el original el 11 de junio de 2018 . Consultado el 11 de junio de 2018 .
- ^ Aiello, Joey; Wheeler, Sean (10 de enero de 2018). "Ciclo de vida de soporte de PowerShell Core" . Microsoft Docs . Microsoft .
- ^ Calvo, Angel (11 de enero de 2018). "Las 10 razones más interesantes para migrar" . PowerShell AMA . Microsoft .
- ^ 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 .
- ^ a b c Lee, Steve (5 de abril de 2019). "La próxima versión de PowerShell - PowerShell 7" . Microsoft . Consultado 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). "Vista previa de Microsoft Releases PowerShell 7" . 1105 Media Inc . Consultado 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 | Potencia Shell
- ^ "Prueba de conexión" . Documentación de PowerShell . Microsoft . 9 de agosto de 2015.
- ^ ¡ Tar y Curl llegan a Windows! - Comunidad tecnológica de Microsoft - 382409
- ^ 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 secuencia de comandos de PowerShell" . Microsoft Docs . Microsoft.
- ^ Wheeler, Sean (13 de noviembre de 2016). "Cómo escribir un módulo binario 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. "Exportar-Clixml" . Microsoft Docs . Microsoft.
- ^ Wheeler, Sean; Jofre, Juan Pablo; Vorobev, Sergei; Nikolaev, Kirill; Coulter, David. "Exportar-Consola" . Microsoft Docs . Microsoft.
- ^ Wheeler, Sean (2 de junio de 2020). "Acerca de los archivos de configuración de la sesión" . Microsoft Docs . Microsoft.
- ^ Wheeler, Sean (2 de junio de 2020). "New-PSRoleCapabilityFile" . Microsoft Docs . Microsoft.
- ^ "Microsoft Transporter Suite para Lotus Domino" . 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 complementos de IoT Core" . Consultado el 13 de junio de 2020 .
- ^ "Comandos de PowerShell para Active Directory por Quest Software" . Consultado el 2 de julio de 2008 .
- ^ "PowerShell Remoting a través de la directiva de grupo" . Consultado el 7 de diciembre de 2007 .
- ^ "VMware vSphere PowerCLI" . Consultado el 9 de septiembre de 2014 .
- ^ "Windows PowerShell: IIS7 PowerShell Provider Tech Preview 2" . 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 # 16: soporte de PowerShell" . Consultado 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" . 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" . Consultado el 16 de febrero de 2012 .
- ^ "EqualLogic HIT-ME con PowerShell" . Consultado el 9 de marzo de 2012 .
- ^ de: LOGINventory
- ^ "Extensiones de Selenium PowerShell" . Consultado el 20 de agosto de 2012 .
- ^ "Pash" . SourceForge . Dice Holdings, Inc. Consultado el 27 de septiembre de 2011 .
- ^ "Proyecto Pash" . Consultado el 10 de abril de 2013 .
- ^ "Pash ahora está obsoleto · Edición # 429 · Pash-Project / Pash" . GitHub . Consultado el 26 de noviembre de 2019 .
Otras lecturas
- Oakley, Andy (2005). Monad (también conocido como PowerShell) . O'Reilly Media . ISBN 0-596-10009-4.
- Holmes, Lee (2006). Referencia rápida de Windows PowerShell . O'Reilly Media . ISBN 0-596-52813-2.
- Holmes, Lee (2007). Libro de recetas de Windows PowerShell . O'Reilly Media . ISBN 978-0-596-52849-2.
- Watt, Andrew (2007). Windows PowerShell profesional . Prensa Wrox . ISBN 978-0-471-94693-9.
- Kumaravel, Arul; White, Jon; Naixin Li, Michael; Happell, Scott; Xie, Guohui; Vutukuri, Krishna C. (2008). Programación profesional de Windows PowerShell: complementos, cmdlets, hosts y proveedores . Prensa Wrox . ISBN 978-0-470-17393-0.
- Kopczynski, Tyson; Handley, Pete; Shaw, Marco (2009). Windows PowerShell Unleashed (2.a ed.). Educación de Pearson . ISBN 978-0-672-32988-3.
- Jones, Don; Hicks, Jeffery (2010). Windows PowerShell 2.0: TFM (3.a ed.). Sapien Technologies. ISBN 978-0-9821314-2-8.
- Finke, Douglas (2012). Windows PowerShell para desarrolladores . O'Reilly Media . ISBN 978-1-4493-2270-0.
- Wilson, Ed (2013). Windows PowerShell 3.0 paso a paso . Microsoft Press . ISBN 978-0-7356-6339-8.
- Wilson, Ed (2014). Prácticas recomendadas de Windows PowerShell . Microsoft Press . ISBN 978-0-7356-6649-8.
enlaces externos
- Página web oficial
- PowerShell en GitHub
- Guía de supervivencia de Windows PowerShell en TechNet Wiki