about_Functions_Advanced

Rövid leírás

Olyan speciális függvényeket mutat be, amelyekkel parancsmagokat hozhat létre szkriptek használatával.

Hosszú leírás

A parancsmagok egyetlen parancsok, amelyek részt vesznek a PowerShell folyamatszemantikáiban. Ide tartoznak a bináris parancsmagok, a speciális szkriptfüggvények, a CDXML és a munkafolyamatok.

A speciális függvényekkel PowerShell-függvényként írt parancsmagokat hozhat létre. A speciális függvények megkönnyítik a parancsmagok létrehozását bináris parancsmagok írása és fordítása nélkül. A bináris parancsmagok .NET-osztályok, amelyek .NET nyelven, például C# nyelven íródtak.

A speciális függvények az CmdletBinding attribútummal olyan függvényekként azonosítják őket, amelyek parancsmagokhoz hasonlóan működnek. Az CmdletBinding attribútum hasonló ahhoz a Cmdlet attribútumhoz, amelyet a lefordított parancsmagosztályokban használ az osztály parancsmagként való azonosításához. További információ erről az attribútumról: about_Functions_CmdletBindingAttribute.

Az alábbi példa egy olyan függvényt mutat be, amely elfogadja a nevet, majd a megadott névvel megszólítást jelenít meg. Figyelje meg azt is, hogy ez a függvény egy olyan nevet definiál, amely tartalmaz egy igét (Küldés) és egy főnév (Greeting) párt, például egy lefordított parancsmag ige-főnév párját. A függvények azonban nem igényelnek ige-főnév nevet.

function Send-Greeting
{
    [CmdletBinding()]
    Param(
        [Parameter(Mandatory=$true)]
        [string] $Name
    )

    Process
    {
        Write-Host ("Hello " + $Name + "!")
    }
}

A függvény paraméterei a Parameter attribútummal vannak deklarálva. Ez az attribútum használható önállóan, vagy kombinálható az Alias attribútummal vagy számos más paraméterérvényesítési attribútummal. További információ a paraméterek deklarálásáról (beleértve a futásidőben hozzáadott dinamikus paramétereket is), lásd about_Functions_Advanced_Parameters.

Az előző függvény tényleges munkája a Process blokkban történik, amely egyenértékű a lefordított parancsmagok által a parancsmagnak átadott adatok feldolgozásához használt ProcessingRecord metódussal. Ezt a blokkot a Kezdés és a Befejezés blokkokkal együtt a about_Functions_Advanced_Methods témakörben ismertetjük.

A speciális függvények a következő módokon térnek el a lefordított parancsmagoktól:

  • A speciális függvényparaméter-kötés nem ad kivételt, ha egy sztringtömb logikai paraméterhez van kötve.
  • A ValidateSet attribútum és a ValidatePattern attribútum nem tud elnevezett paramétereket átadni.
  • A speciális függvények nem használhatók tranzakciókban.

Lásd még