TEMA
about_Script_Blocks
DESCRIPCIÓN BREVE
Define lo que es un bloque de script y explica cómo usar los bloques
de script en el lenguaje de programación de Windows PowerShell.
DESCRIPCIÓN DETALLADA
En el lenguaje de programación de Windows PowerShell, un bloque
de script es una colección de instrucciones o expresiones que se
pueden usar como una sola unidad. Un bloque de script puede aceptar
argumentos y valores devueltos.
Sintácticamente, un bloque de script es una lista de instrucciones
entre llaves, tal y como se muestra en la sintaxis siguiente:
{<lista de instrucciones>}
Un bloque de script devuelve el resultado de todos los comandos
del bloque de script como un solo objeto o como una matriz.
Al igual que las funciones, un bloque de script puede incluir
parámetros. Use la palabra clave Param para asignar parámetros
con nombre, tal y como se indica en la sintaxis siguiente:
{
param ([tipo]$parameter1 [,[tipo]$parameter2])
<lista de instrucciones>
}
En un bloque de script, a diferencia de las funciones, no se pueden
especificar parámetros fuera de las llaves.
Al igual que las funciones, los bloques de script pueden incluir las
palabras clave DynamicParam, Begin, Process y End. Para obtener más
información, vea about_Functions y about_Functions_Advanced.
Usar bloques de script
Un bloque de script es una instancia de un tipo de Microsoft .NET
Framework (System.Management.Automation.ScriptBlock). Los comandos
pueden tener valores de parámetro de bloque de script. Por ejemplo,
el cmdlet Invoke-Command tiene un parámetro ScriptBlock que toma un
valor de bloque de script, tal y como se muestra en este ejemplo:
C:\PS> invoke-command -scriptblock { get-process }
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- ----------- -----------
999 28 39100 45020 262 15.88 1844 communicator
721 28 32696 36536 222 20.84 4028 explorer
. . .
El bloque de script que se usa como valor puede ser más
complicado, tal y como se muestra en el ejemplo siguiente:
C:\PS> invoke-command -scriptblock { param ($uu = "Parámetro");
"$uu asignado." }
Parámetro asignado.
El bloque de script en el ejemplo anterior usa la palabra clave
Param para crear un parámetro con un valor predeterminado. En
el ejemplo siguiente se utiliza el parámetro Args del cmdlet Invoke-
Command para asignar otro valor al parámetro:
C:\PS> invoke-command -scriptblock {param ($uu = "Parámetro");
"$uu asignado."} -args "Otro valor"
Otro valor asignado.
Se puede asignar un bloque de script a una variable, tal y como
se muestra en el ejemplo siguiente:
C:\PS> $a = {param ($uu = "Parámetro"); "$uu asignado."}
Se puede usar la variable con un cmdlet como Invoke-Command,
tal y como se indica en el ejemplo siguiente:
C:\PS> invoke-command -scriptblock $a -args "Otro valor"
Otro valor asignado.
Se puede ejecutar un bloque de script asignado a una variable
mediante el operador de llamada (&), tal y como se muestra en
el ejemplo siguiente:
C:\PS> &$a
Parámetro asignado.
Asimismo, se puede proporcionar un parámetro al bloque de
script, tal y como se muestra en el ejemplo siguiente:
C:\PS> &$a "Otro valor"
Otro valor asignado.
Si desea asignar a una variable el valor creado por un bloque
de script, use el operador de llamada para ejecutar directamente
el bloque de script, tal y como se muestra en el ejemplo siguiente:
C:\PS> $a = &{param ($uu = "Parámetro"); "$uu asignado."}
C:\PS> $a
Parámetro asignado.
Para obtener más información sobre el operador de llamada, vea about_Operators.
VEA TAMBIÉN
about_Functions
about_Functions_Advanced
about_Operators