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)