TEMA
    about_Functions_Advanced

DESCRIPCIÓN BREVE
    Introduce funciones avanzadas que funcionan de manera parecida a 
    los cmdlets.

DESCRIPCIÓN DETALLADA
    Las funciones avanzadas permiten escribir funciones que pueden 
    realizar operaciones parecidas a las que se pueden llevar a cabo 
    con cmdlets. Las funciones avanzadas resultan útiles cuando se 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 se desea restringir la funcionalidad 
    de un cmdlet compilado o escribir una función parecida a un cmdlet compilado.
 

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


    Las funciones avanzadas utilizan el atributo CmdletBinding para 
    identificarlas como funciones que funcionan de manera parecida a los 
    cmdlets. El atributo CmdletBinding es similar al atributo Cmdlet que 
    se utiliza en las clases de cmdlets compilados para identificar la 
    clase como un cmdlet. Para obtener más información sobre este 
    atributo, vea 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 sustantivo (Greeting) 
    similar al par verbo-sustantivo de un cmdlet compilado. Sin 
    embargo, no es obligatorio que las funciones tengan un nombre 
    compuesto por un par verbo-sustantivo. 


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


    Los parámetros de la función se declaran utilizando el atributo 
    Parameter. Este atributo se puede usar solo o combinarse con el 
    atributo Alias o con varios atributos más de validación de parámetro.
    Para obtener más información sobre cómo declarar parámetros 
    (incluso los parámetros dinámicos que se agregan en tiempo de 
    ejecución), vea
    about_Functions_Advanced_Parameters. 
 

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


    Las funciones avanzadas se diferencian de los cmdlets compilados en lo 
    siguiente: 

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

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

        - Las funciones avanzadas no se pueden utilizar en transacciones.

   
VEA TAMBIÉN
    about_Functions_Advanced_CmdletBindingAttribute 
    about_Functions_Advanced_Methods  
    about_Functions_Advanced_Parameters 
    Windows PowerShell Cmdlets (https://go.microsoft.com/fwlink/?LinkID
    =135279) 




Tabla de contenido