about_Functions_Advanced

DESCRIPCIÓN BREVE

Presenta funciones avanzadas que son una manera de crear cmdlets mediante scripts.

DESCRIPCIÓN LARGA

Un cmdlet es un único comando que participa en la semántica de canalización de PowerShell. Esto incluye cmdlets binarios, funciones de script avanzadas, CDXML y flujos de trabajo.

Las funciones avanzadas permiten crear cmdlets que se escriben como una función de PowerShell. Las funciones avanzadas facilitan la creación de cmdlets sin tener que escribir y compilar un cmdlet binario. Los cmdlets binarios son clases .NET escritas en un lenguaje .NET como C#.

Las funciones avanzadas usan CmdletBinding el atributo para identificarlas como funciones que actúan como cmdlets. El atributo es similar al atributo Cmdlet que se usa en las clases de cmdlet compiladas para identificar CmdletBinding 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 con el nombre proporcionado. Observe también que esta función define un nombre que incluye un par verbo (Send) y sustantivo (Greeting) como el par verbo-nombre de un cmdlet compilado. Sin embargo, no es necesario que las funciones tengan un nombre de 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 mediante el atributo Parameter. Este atributo se puede usar por sí solo o se puede combinar con el atributo Alias o con otros atributos de validación de parámetros. Para obtener más información sobre cómo declarar parámetros (incluidos los parámetros dinámicos que se agregan en tiempo de ejecución), vea 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 describe en el about_Functions_Advanced_Methods tema.

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

  • El enlace de parámetros de función avanzada no produce una excepción cuando una matriz de cadenas está enlazada 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 transacciones.

CONSULTE TAMBIÉN

about_Functions

about_Functions_Advanced_Methods

about_Functions_Advanced_Parameters

about_Functions_CmdletBindingAttribute

about_Functions_OutputTypeAttribute