TEMA about_Windows_PowerShell_2.0 DESCRIPCIÓN BREVE Describe las nuevas características que se incluyen en Windows PowerShell 2.0. DESCRIPCIÓN DETALLADA Windows PowerShell 2.0 incluye varias características significativas que amplían su utilización, mejoran su facilidad de uso y permiten controlar y administrar entornos basados en Windows de forma más fácil y completa. Windows PowerShell 2.0 es compatible con versiones anteriores. Los cmdlets, proveedores, complementos, scripts, funciones y perfiles que se diseñaron para Windows PowerShell 1.0 se pueden usar en Windows PowerShell 2.0 sin cambios. NUEVAS CARACTERÍSTICAS Windows PowerShell 2.0 incluye las nuevas características siguientes. Comunicación remota Windows PowerShell 2.0 permite ejecutar comandos en uno o muchos equipos remotos con un solo comando. Se pueden ejecutar comandos individuales o se puede crear una conexión persistente (una sesión) para ejecutar una serie de comandos relacionados. También se puede iniciar una sesión con un equipo remoto para que los comandos que se escriban se ejecuten directamente en el equipo remoto. Las características de comunicación remota de Windows PowerShell se basan en Administración remota de Windows (WinRM). WinRM es la implementación de Microsoft del protocolo WS-Management, un protocolo de comunicaciones compatible con firewall y basado en SOAP estándar. Los equipos remotos deben tener Windows PowerShell 2.0, Microsoft .NET Framework 2.0 y el servicio WinRM. Los comandos remotos se admiten en todos los sistemas operativos que pueden ejecutar Windows PowerShell. El usuario actual debe tener permiso para ejecutar comandos en los equipos remotos. Para obtener más información, vea about_Remote_Requirements. Para admitir la comunicación remota, se han agregado los cmdlets Invoke-Command, Enter-PSSession y Exit-PSSession, junto con otros cmdlets que contienen el sustantivo PSSession. Estos cmdlets permiten crear y administrar conexiones persistentes. El parámetro ComputerName también se ha agregado a varios cmdlets, incluidos los cmdlets Get-Process, Get-Service y Get-Eventlog. Este parámetro permite obtener información acerca de los equipos remotos. Estos cmdlets utilizan métodos de .NET Framework para obtener sus datos, por lo que no se basan en la comunicación remota de Windows PowerShell. No requieren nuevos programas ni una nueva configuración. Para obtener más información, vea la Ayuda de cada cmdlet. Para obtener más información sobre comandos remotos, vea about_Remote y about_Remote_FAQ. Para obtener más información sobre sesiones, vea about_PSSessions. ISE de Windows PowerShell Windows PowerShell 2.0 incluye Entorno de scripting integrado (ISE) de Windows PowerShell, una aplicación host que permite ejecutar comandos y diseñar, escribir, probar y depurar scripts en un entorno gráfico basado en Unicode y codificado por colores. ISE de Windows PowerShell requiere Microsoft .NET Framework 3.0 o posterior. ISE de Windows PowerShell incluye: - Un Panel de comandos que permite ejecutar comandos interactivos del mismo modo que se haría en la consola de Windows PowerShell. Sólo hay que escribir un comando y presionar ENTRAR. El resultado aparece en el Panel de salida. - Un Panel de scripts que permite componer, editar, depurar y ejecutar funciones y scripts. - Varias fichas, cada una con sus propios Panel de comandos y Panel de scripts, que permiten trabajar en una o varias tareas independientemente. ISE de Windows PowerShell se ha diseñado tanto para principiantes como para usuarios expertos. Trabajos en segundo plano Los trabajos en segundo plano son comandos que se ejecutan asincrónicamente. Cuando se ejecuta un trabajo en segundo plano, el símbolo del sistema devuelve un resultado inmediatamente, aunque el comando se esté ejecutando todavía. Puede utilizar la característica de trabajo en segundo plano para ejecutar un comando complejo en segundo plano de modo que pueda utilizar la sesión para otro trabajo mientras se ejecuta el comando. Puede ejecutar un trabajo en segundo plano en un equipo local o remoto y guardar los resultados después tanto en uno como en otro equipo. Para ejecutar un trabajo de forma remota, use el cmdlet Invoke-Command. Windows PowerShell incluye un conjunto de cmdlets que contienen el sustantivo Job (cmdlets Job). Utilice estos cmdlets para crear, iniciar, administrar y eliminar trabajos en segundo plano y para obtener los resultados de un trabajo en segundo plano. Para obtener una lista de los cmdlets de trabajo, escriba el comando siguiente: get-command *-job Para obtener más información sobre los trabajos en segundo plano, vea about_Jobs. Depurador de scripts Windows PowerShell 2.0 incluye un depurador basado en cmdlets para scripts y funciones. El depurador es compatible con una API pública totalmente documentada que se puede utilizar para generar un depurador propio o para personalizar o ampliar el depurador. Los cmdlets de depurador permiten establecer puntos de interrupción en líneas, columnas, variables y comandos. Estos cmdlets permiten administrar los puntos de interrupción y mostrar la pila de llamadas. Puede crear puntos de interrupción condicionales y especificar acciones personalizadas en un punto de interrupción, como ejecutar scripts de diagnóstico y de registro. Cuando se alcanza un punto de interrupción, Windows PowerShell suspende la ejecución e inicia el depurador. El depurador incluye un conjunto de comandos personalizados que permiten recorrer paso a paso el código. También puede ejecutar comandos de Windows PowerShell estándar para mostrar los valores de variables, y utilizar cmdlets para investigar los resultados. Para obtener más información sobre la depuración, vea about_Debuggers. Sección de datos Los scripts diseñados para Windows PowerShell 2.0 pueden tener una o más secciones de datos que aíslan los datos de la lógica de script. Los datos de esta nueva sección se limitan a un subconjunto especificado del lenguaje de scripting de Windows PowerShell. En Windows PowerShell 2.0, la sección de datos se utiliza para admitir la internacionalización de los scripts. Puede utilizar esta sección para aislar e identificar cadenas de mensajes de usuario que se traducirán a varios idiomas de la interfaz de usuario. Para obtener más información, vea about_Data_Sections. Internacionalización de los scripts Las características de internacionalización de los scripts de Windows PowerShell 2.0 permiten atender mejor a los usuarios en todo el mundo. La internacionalización de los scripts permite que los scripts y las funciones muestren mensajes y texto de Ayuda a los usuarios en varios idiomas. Las características de internacionalización de los scripts consultan la referencia cultural ($PsUICulture) de la interfaz de usuario del sistema operativo durante la ejecución y, seguidamente, importan las cadenas de texto traducidas adecuadas para poderlas mostrar al usuario. La sección de datos permite almacenar cadenas de texto independientemente del código para poderlas identificar fácilmente. Un nuevo cmdlet, ConvertFrom-StringData, convierte las cadenas de texto a tablas hash a modo de diccionario para facilitar la traducción. Para obtener más información, vea about_Script_Internationalization. Cmdlets de WMI La funcionalidad de Instrumental de administración de Windows (WMI) de Windows PowerShell 2.0 se ha mejorado con la incorporación de los cmdlets siguientes: - Remove-WmiObject - Set-WmiInstance - Invoke-WmiMethod Se han agregado nuevos parámetros al cmdlet Get-WmiObject. Todos los cmdlets de WMI admiten ahora los parámetros siguientes: - EnableAllPrivileges - Impersonation - Authentication - Authority Estos nuevos parámetros proporcionan un control más exhaustivo sobre la configuración de seguridad de las operaciones de WMI sin tener que trabajar directamente con los tipos de la biblioteca de clases de .NET Framework. Para obtener una lista de los cmdlets de WMI, escriba el comando siguiente: get-help *wmi* Para obtener la Ayuda de cada cmdlet, escriba get-help seguido del nombre del cmdlet. El cmdlet Get-WinEvent El cmdlet Get-WinEvent obtiene eventos de los registros del visor de eventos y de los archivos de registro de eventos de Seguimiento de eventos para Windows (ETW) en los equipos local y remotos. Puede obtener eventos de los registros de eventos clásicos y de los registros de eventos de Windows que se introdujeron en Windows Vista. Puede utilizar Get-WinEvent para obtener los objetos que representan los registros de eventos, los proveedores de registros de eventos y los eventos de los registros. Get-WinEvent permite combinar eventos de orígenes diferentes en un solo comando. Admite consultas avanzadas en Lenguaje de rutas XML (Xpath), XML y formato de tabla hash. Get-WinEvent requiere Windows Vista o Windows Server 2008 y Microsoft .NET Framework 3.5. El cmdlet Out-Gridview El cmdlet Out-GridView muestra los resultados de otros comandos en una tabla interactiva en la que se pueden buscar, ordenar, agrupar y filtrar los resultados. Por ejemplo, se pueden enviar los resultados de un comando Get-Process, Get-WmiObject, Get-WinEvent o Get-Eventlog a Out-GridView y, a continuación, utilizar las características de tabla para examinar los datos. help out-gridview -full El cmdlet Add-Type El cmdlet Add-Type permite agregar tipos de .NET Framework a Windows PowerShell desde el código fuente de otro lenguaje de .NET Framework. Add-Type compila el código fuente que crea los tipos y genera ensamblados que contienen los nuevos tipos de .NET Framework. A continuación, puede utilizar los tipos de .NET Framework en comandos de Windows PowerShell junto con los tipos de objetos estándar proporcionados por .NET Framework. También puede utilizar Add-Type para cargar ensamblados en la sesión con el fin de poder utilizar los tipos de los ensamblados en Windows PowerShell. Add-Type permite desarrollar nuevos tipos de .NET Framework, utilizar tipos de .NET Framework en bibliotecas de C# y tener acceso a APIs de Win32. Para obtener más información, vea Add-Type. Notificación de eventos Windows PowerShell 2.0 introduce la notificación de eventos. Los usuarios pueden registrar y suscribirse a eventos, tales como eventos de Windows PowerShell, eventos de WMI o eventos de .NET Framework. También pueden escuchar, reenviar y actuar en eventos de administración y del sistema tanto sincrónica como asincrónicamente. Los programadores pueden escribir aplicaciones que utilizan la arquitectura de eventos para recibir notificaciones sobre los cambios de estado. Los usuarios pueden escribir scripts que se suscriban a varios eventos y que reaccionen al contenido. Windows PowerShell proporciona cmdlets que crean nuevos eventos, obtienen eventos y suscripciones de eventos, registran y eliminan del Registro eventos, esperan eventos y eliminan eventos. Para obtener más información sobre estos cmdlets, escriba el comando siguiente: get-command *-event Módulos Los módulos de Windows PowerShell permiten dividir y organizar los scripts de Windows PowerShell en unidades independientes, autónomas y reutilizables. El código de un módulo se ejecuta en su propio contexto, por lo que no puede agregarse a, entrar en conflicto con, ni sobrescribir las variables, funciones, alias y demás recursos en la sesión. Puede escribir, distribuir, combinar, compartir y reutilizar módulos para generar scripts simples y aplicaciones complejas. Windows PowerShell 2.0 incluye cmdlets para agregar, obtener y quitar módulos, y para exportar miembros de módulo. Para obtener más información sobre los cmdlets relacionados con módulos, escriba el comando siguiente: get-command *-module* Transacciones Windows PowerShell 2.0 incluye compatibilidad con transacciones. Las transacciones permiten deshacer una serie completa de operaciones. Sólo están disponibles para operaciones que admiten transacciones. Se han diseñado para aplicaciones que requieren atomicidad, coherencia, aislamiento y posibilidad de recuperación, como bases de datos y colas de mensajes. Los cmdlets y proveedores que admiten transacciones tienen un nuevo parámetro UseTransaction. Para iniciar una operación dentro de una transacción, utilice el cmdlet Start-Transaction. A continuación, cuando utilice los cmdlets que realizan la operación, use el parámetro UseTransaction de cada cmdlet si desea que el comando forme parte de una transacción. Si se produce un error en cualquier punto de la ejecución de cualquier comando en la transacción, utilice el cmdlet Rollback-Transaction para deshacer todos los comandos de la transacción. Si todos los comandos se ejecutan correctamente, utilice el cmdlet Commit-Transaction para que las acciones de los comandos sean permanentes. Windows PowerShell 2.0 incluye cmdlets para iniciar, usar, confirmar y revertir transacciones. Para obtener información sobre estos cmdlets, escriba el comando siguiente: get-command *transaction* Cambios importantes respecto a Windows PowerShell 1.0 -- El valor de la entrada del Registro PowerShellVersion en HKLM\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine se ha cambiado en 2.0. -- Se han agregado nuevos cmdlets y variables. Estas incorporaciones podrían entrar en conflicto con variables y funciones en perfiles y scripts. -- El operador -IEQ realiza una comparación sin distinción entre mayúsculas y minúsculas en caracteres. -- El cmdlet Get-Command obtiene funciones de forma predeterminada, además de cmdlets. -- Los comandos nativos que generan una interfaz de usuario no se pueden canalizar al cmdlet Out-Host. -- Las nuevas palabras clave de lenguaje Begin, Process, End y Dynamic Param podrían entrar en conflicto con palabras similares utilizadas en scripts y funciones. La interpretación de estas palabras como palabras clave de lenguaje podrían dar lugar a errores en el análisis. -- La resolución de nombres de cmdlets ha cambiado. En Windows PowerShell 1.0, se generaba un error en tiempo de ejecución cuando dos complementos de Windows PowerShell exportaban cmdlets con el mismo nombre. En Windows PowerShell 2.0, el último cmdlet que se agrega a la sesión se ejecuta cuando se escribe el nombre de comando. Para ejecutar un comando que no se ejecuta de forma predeterminada, se ha de calificar el nombre de cmdlet con el nombre del complemento o módulo en que se ha originado. -- Un nombre de función seguido de '-?' obtiene el tema de Ayuda de la función, si existe uno en la función. -- La resolución de parámetros en métodos de Microsoft .NET Framework ha cambiado. En Windows PowerShell 1.0, si se llamaba a un método de .NET sobrecargado que tuviera más de una sintaxis, no se notificaba ningún error. En Windows PowerShell 2.0 se notifica un error de ambigüedad. Además, en Windows PowerShell 2.0, el algoritmo para elegir el mejor método se ha revisado de forma apreciable para minimizar el número de ambigüedades. -- Si está enumerando una colección en la canalización e intenta modificar la colección en la canalización, Windows PowerShell produce una excepción. Por ejemplo, los comandos siguientes funcionarían en Windows PowerShell 1.0, pero no se ejecutarían correctamente después de la primera iteración de canalización en Windows PowerShell 2.0. $h = @{Name="Hello"; Value="Test"} $h.keys | foreach-object {$h.remove($_)} Para evitar este error, cree una subexpresión para el enumerador utilizando los caracteres $(). Por ejemplo: $($h.keys) | foreach-object {$h.remove($_)} Para obtener más información sobre Windows PowerShell 2.0, visite los sitios web siguientes: -- Sitio web de Windows PowerShell https://go.microsoft.com/fwlink/?LinkID=106031 -- Blog de equipo de Windows PowerShell: https://go.microsoft.com/fwlink/?LinkId=143696 VEA TAMBIÉN about_Data_Sections about_Debuggers about_Functions_Advanced about_Jobs about_Join about_PSSessions about_Remote about_Script_Internationalization about_Split