about_Functions_Advanced

Se aplica a: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

TEMA

about_Functions_Advanced

DESCRIPCIÓN BREVE

Presenta funciones avanzadas que actúan de una forma similar a los cmdlets.

DESCRIPCIÓN LARGA

Las funciones avanzadas le permiten escribir funciones que pueden realizar operaciones similares a las que puede realizar con los cmdlets. Las funciones avanzadas son útiles si desea escribir rápidamente una función sin tener que escribir un cmdlet compilado mediante un lenguaje de Microsoft .NET Framework. Estas funciones también son útiles si desea restringir la funcionalidad de un cmdlet compilado o si desea escribir una función similar a un cmdlet compilado.

Hay una diferencia entre la creación de un cmdlet compilado y una función avanzada. Los cmdlets compilados son clases de .NET Framework que deben escribirse en un lenguaje de .NET Framework como C#. En cambio, las funciones avanzadas se escriben en el lenguaje de script de Windows PowerShell®, de la misma manera que otras funciones o bloques de scripts.

Las funciones avanzadas usan el atributo CmdletBinding para identificarse como funciones que actúan como cmdlets. El atributo CmdletBinding es similar al atributo Cmdlet que se usa en las clases de cmdlet compilado para identificar la clase como un cmdlet. Para más información sobre este atributo, consulte about_Functions_CmdletBindingAttribute.

En el ejemplo siguiente se muestra una función que acepta un nombre y, a continuación, imprime un saludo usando el nombre proporcionado. Observe también que esta función define un nombre que incluye un par de verbo (Send) y un sustantivo (Greeting), de forma similar al par verbo-nombre de un cmdlet compilado. Sin embargo, las funciones no tienen que tener un nombre verbo-sustantivo.

        function Send-Greeting
        {
          [CmdletBinding()]
          Param(
              [Parameter(Mandatory=$true)]
              [string] $Name
          )
          Process
          {
            write-host ("Hello " + $Name + "!")
          }
        }

Los parámetros de la función se declaran con el atributo Parameter. Este atributo se puede usar solo o en combinación con el atributo Alias o con muchos otros atributos de validación de parámetros. Para obtener más información acerca de cómo declarar parámetros (incluidos los parámetros dinámicos que se agregan en tiempo de ejecución), consulte about_Functions_Advanced_Parameters.

El trabajo real de la función anterior se realiza en el bloque Process, que es equivalente al método ProcessingRecord que usan los cmdlets compilados para procesar los datos que se pasan al cmdlet. Este bloque, junto con los bloques Begin y End, se describen en el tema about_Functions_Advanced_Methods.

Las funciones avanzadas difieren de los cmdlets compilados de las maneras siguientes:

- El enlace de parámetros de las funciones avanzadas no produce una excepción cuando se enlaza una matriz de cadenas a un parámetro booleano.

- El atributo ValidateSet y el atributo ValidatePattern no pueden pasar parámetros con nombre.

- Las funciones avanzadas no se pueden usar en las transacciones.

VEA TAMBIÉN

about_Functions

about_Functions_Advanced_Methods

about_Functions_Advanced_Parameters

about_Functions_CmdletBindingAttribute

about_Functions_OutputTypeAttribute

Cmdlets de Windows PowerShell (https://go.microsoft.com/fwlink/?LinkID=135279)