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 escritos 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 de .NET escritas en un lenguaje .NET como C#.

Las funciones avanzadas usan el CmdletBinding atributo para identificarlos como funciones que actúan como cmdlets. El CmdletBinding atributo es similar al atributo Cmdlet que se usa en las clases de cmdlet compiladas para identificar la clase como un cmdlet. Para obtener 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 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-sustantivo de un cmdlet compilado. Sin embargo, no es necesario que las funciones tengan 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 mediante el Parameter atributo . Este atributo se puede usar 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), consulte about_Functions_Advanced_Parameters.

El trabajo real de la función anterior se realiza en el process bloque , 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 begin bloques y end , se describe 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 función avanzada no produce una excepción cuando una matriz de cadenas está enlazada a un parámetro booleano .
  • El ValidateSet atributo y el ValidatePattern atributo no pueden pasar parámetros con nombre.
  • Las funciones avanzadas no se pueden usar en transacciones.

Consulte también