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




Tabla de contenido