Acerca de las funciones avanzadasAbout Functions Advanced

DESCRIPCIÓN BREVESHORT DESCRIPTION

Presenta funciones avanzadas que son una forma de crear cmdlets mediante scripts.Introduces advanced functions that are a way to create cmdlets using scripts.

DESCRIPCIÓN LARGALONG DESCRIPTION

Un cmdlet es un comando único que participa en la semántica de canalización de PowerShell.A cmdlet is a single command that participates in the pipeline semantics of PowerShell. Esto incluye cmdlets binarios, funciones de script avanzadas, CDXML y flujos de trabajo.This includes binary cmdlets, advanced script functions, CDXML, and Workflows.

Las funciones avanzadas permiten crear cmdlets que se escriben como una función de PowerShell.Advanced functions allow you create cmdlets that are written as a PowerShell function. Las funciones avanzadas facilitan la creación de cmdlets sin tener que escribir y compilar un cmdlet binario.Advanced functions make it easier to create cmdlets without having to write and compile a binary cmdlet. Los cmdlets binarios son clases de .NET que se escriben en un lenguaje .NET como C#.Binary cmdlets are .NET classes that are written in a .NET language such as C#.

Las funciones avanzadas usan el CmdletBinding atributo para identificarlas como funciones que actúan como cmdlets.Advanced functions use the CmdletBinding attribute to identify them as functions that act like 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.The CmdletBinding attribute is similar to the Cmdlet attribute that is used in compiled cmdlet classes to identify the class as a cmdlet. Para obtener más información acerca de este atributo, vea about_Functions_CmdletBindingAttribute.For more information about this attribute, see 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.The following example shows a function that accepts a name and then prints a greeting using the supplied name. Tenga en cuenta también que esta función define un nombre que incluye un par de verbo (envío) y sustantivo (saludo) como el par verbo-Sustantivo de un cmdlet compilado.Also notice that this function defines a name that includes a verb (Send) and noun (Greeting) pair like the verb-noun pair of a compiled cmdlet. Sin embargo, no es necesario que las funciones tengan un nombre de verbo-Sustantivo.However, functions are not required to have a verb-noun name.

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.The parameters of the function are declared by using the Parameter attribute. Este atributo se puede usar por sí solo o puede combinarse con el atributo de alias o con otros atributos de validación de parámetros.This attribute can be used alone, or it can be combined with the Alias attribute or with several other parameter validation attributes. 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.For more information about how to declare parameters (including dynamic parameters that are added at runtime), see 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.The actual work of the previous function is performed in the Process block, which is equivalent to the ProcessingRecord method that is used by compiled cmdlets to process the data that is passed to the cmdlet. Este bloque, junto con los bloques inicial y final, se describe en el tema about_Functions_Advanced_Methods .This block, along with the Begin and End blocks, is described in the about_Functions_Advanced_Methods topic.

Las funciones avanzadas se diferencian de los cmdlets compilados de las siguientes maneras:Advanced functions differ from compiled cmdlets in the following ways:

  • El enlace de parámetros de función avanzada no produce una excepción cuando una matriz de cadenas se enlaza a un parámetro booleano.Advanced function parameter binding does not throw an exception when an array of strings is bound to a Boolean parameter.
  • El atributo ValidateSet y el atributo ValidatePattern no pueden pasar parámetros con nombre.The ValidateSet attribute and the ValidatePattern attribute cannot pass named parameters.
  • Las funciones avanzadas no se pueden usar en transacciones.Advanced functions cannot be used in transactions.

CONSULTE TAMBIÉNSEE ALSO

about_Functionsabout_Functions

about_Functions_Advanced_Methodsabout_Functions_Advanced_Methods

about_Functions_Advanced_Parametersabout_Functions_Advanced_Parameters

about_Functions_CmdletBindingAttributeabout_Functions_CmdletBindingAttribute

about_Functions_OutputTypeAttributeabout_Functions_OutputTypeAttribute