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