Windows PowerShell: Splatting

Ya que integra los parámetros antes de enviarlos a lo largo de un comando pueden ahorrarle tiempo, pero sólo si está utilizando la versión más reciente de Windows PowerShell.

Don Jones

¿En caso de otra pero en la industria de TI se puede utilizar una palabra como "splatting" en un contexto serio y profesional? Reparación de parabrisas, tal vez, pero no muchos otros lugares.

En términos de Windows PowerShell, splatting es una forma de empaquetar parámetros para enviar a un comando. Se trata de una nueva característica de Windows PowerShell 2.0. Si aún está tontamente con la versión 1 (es decir, debido a que utiliza Exchange Server 2007, que lo requiere), a continuación, esto no funcionará.

La manera antigua

Normalmente, debería ejecutar comandos al proporcionar parámetros a ellos directamente en la línea de comandos. Por ejemplo:

Get-WmiObject –computername SERVER-R2 –class Win32_LogicalDisk –filter "DriveType=3" –credential "Administrator"

Puede seguir hacerlo en la versión 2.0 del shell, por supuesto. Si no le gusta que escribe, se pueden truncar los nombres de parámetro. Asegúrese de proporcionar suficiente de cada nombre de parámetro para que el shell será capaz de determinar qué parámetro se debían. Esto también es válida:

Get-WmiObject –comp SERVER-R2 –cla Win32_LogicalDisk –filt "DriveType=3" –cred "Administrator"

Existen parámetros posicionales todavía, por supuesto. Lea la Ayuda de Get-WmiObject, y verá que puede utilizar el parámetro pueden en la primera posición. Esto significa que ni siquiera deben proporcionar el nombre del parámetro, siempre y cuando su valor se pasa en el lugar adecuado:

Get-WmiObject Win32_LogicalDisk –comp SERVER-R2 –filt "DriveType=3" –cred "Administrator"

Combine eso con la capacidad para utilizar el alias en lugar de nombres de cmdlet y puede acabar con una línea de comandos realmente no se puede leer:

Gwmi Win32_LogicalDisk –comp SERVER-R2 –filt "DriveType=3" –cred "Administrator"

En clases, explico mis estudiantes para escribir lo que deseen cuando está usando el comando de shell. Después de todo, guardar usted mismo escribiendo ahorra tiempo. Que es lo que es el shell. Sin embargo, también les explico deben copiar y pegar un comando en una secuencia de comandos. Tiene sentido utilizar el nombre completo del cmdlet y los nombres de parámetro completa. De este modo, la secuencia de comandos eventual fáciles de leer.

Algunos editores de comercial de la secuencia de comandos, como PrimalScript de SAPIEN y PowerGUI de Quest (con un libre Plug-in), puede ampliar los nombres de cmdlet o parámetro de las versiones abreviadas en full. Esto le permite truncar nombres con menos esfuerzo.

La nueva forma

Splatting es una forma totalmente nueva de pasar parámetros a un comando. Comience creando una tabla hash, que también se denomina un diccionario o una matriz asociativa. Una tabla hash es una colección de clave = pares de valor. Una tabla hash básica contiene dos claves, cada uno con un único valor. Aspecto de Windows PowerShell:

@{'key1'='value1';'key2'='value2'}

El signo "@", inicia la tabla hash, encerrado entre llaves, las que este aspecto: {}. Cada par de clave = valor se separa de los demás con un punto y coma. En splatting, las claves son los nombres de parámetro. Los valores son los valores que desea enviar a esos parámetros. En una secuencia de comandos, incluso puede utilizar saltos de línea dentro de la definición de tabla hash para facilitar la lectura de bloque:

$parms = @{'class'='Win32_BIOS';
        'computername'='SERVER-R2';
           'filter'='drivetype=3';
   'credential'='Administrator'
          }

Para transferir los parámetros junto al comando, utilice "@" nuevo. Esta vez, sin embargo, actúa como un operador de la lámina. Puede resultar confuso que una única pieza de puntuación (el símbolo "@") puede tener dos usos diferentes, pero funciona:

Get-WmiObject @parms

Verá un pequeño truco. El signo "@" es seguido por el nombre de variable, que no incluye el signo de dólar. Que es probablemente vale la pena una breve explicación. Puede ser un "problema" principal en el shell que se encuentra con una gran cantidad de personas.

En Windows PowerShell, un nombre de variable es simplemente una secuencia de letras, números y caracteres de subrayado. Normalmente es posible tener espacios y otros signos de puntuación en un nombre de variable, pero parece feo. Un signo de dólar delante del nombre de la variable indica que el shell que se desea tratar con la propia variable. Que desee tratar con su contenido. Es así $var = 5 está colocando el número "5" dentro de la variable denominada var.

El signo "@", cuando se utiliza como un operador de la lámina hace algo similar. Dice, "tomar con los caracteres venir a continuación y se supone que son un nombre de variable. Suponga que la variable contiene una tabla hash, y que las claves son los nombres de parámetro. Expanda dichas decisiones más y fuente de los valores de la tabla hash a esos parámetros." Que puede parecer una explicación de long-winded, pero eso es lo que sucede.

Algunos de la gente piense que, especialmente dentro de una secuencia de comandos, esto:

$parms = @{'class'='Win32_BIOS';
        'computername'='SERVER-R2';
           'filter'='drivetype=3';
           'credential'='Administrator'
          }
Get-WmiObject @parms

Es más sencilla que con esto:

Get-WmiObject –computername SERVER-R2 –class Win32_LogicalDisk –filter "DriveType=3" –credential "Administrator"

Sin duda es una cuestión de preferencia personal. Es fácil ver el argumento para el método splatting. Los parámetros, los nombres y valores, se encuentran perfectamente en una sola zona. Puedes aplicarles formato, del modo que hacia arriba y mire ordenadas y ordenado ("ordenado y ordenado" son un tema importante de Mis clases).

Por lo que la próxima vez que se está colocando un comando en una secuencia de comandos, considere la posibilidad de splatting. Si no hay ninguna, suena interesante.

Don Jones

Don Jones es un MVP de WindowsPowerShell, autor y profesor. Puede ponerse a través de su sitio Web, ConcentratedTech.com, que también contiene información sobre sus clases y los aspectos visuales de la conferencia.

Barra lateral: Windows PowerShell en vídeo

Artículo de este mes tiene un vídeo de companion disponible en Revista Extras - tecnología concentrada. También encontrará vídeos de Windows PowerShell libres adicionales en YouTube - canal del ConcentratedDon.

Finalice el tiempo para registrar de live, exclusivo, práctico tres días Windows PowerShell taller Don Jones coincidir con la primavera de TechMentor 2011. Visite los TechMentorEvents.com Para obtener más información.

Contenido relacionado