about_Functions_Advanced
Rövid leírás
Olyan speciális függvényeket vezet 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ájának használatában. 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#-ban vannak megírva.
A speciális függvények az CmdletBinding
attribútum használatával azonosítják őket parancsmagként működő függvényekként. Az CmdletBinding
attribútum hasonlít a lefordított parancsmagosztályokban használt parancsmagattribútumhoz, amely az osztályt parancsmagként azonosítja. További információ erről az attribútumról: about_Functions_CmdletBindingAttribute.
Az alábbi példa egy nevet elfogadó függvényt mutat be, majd a megadott névvel egy üdvözlést nyomtat ki. Azt is megfigyelheti, hogy ez a függvény egy olyan nevet határoz meg, 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 szükségesek az igenévhez.
function Send-Greeting
{
[CmdletBinding()]
Param(
[Parameter(Mandatory=$true)]
[string] $Name
)
Process
{
Write-Host ("Hello " + $Name + "!")
}
}
A függvény paramétereit az attribútum használatával deklarálja a Parameter
rendszer.
Ez az attribútum önállóan is használható, vagy kombinálható az Alias attribútummal vagy számos más paraméterérvényesítési attribútummal. A paraméterek deklarálásáról (beleértve a futtatókörnyezetben hozzáadott dinamikus paramétereket is) a about_Functions_Advanced_Parameters című témakörben talál további információt.
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 és a begin
end
blokkokat a about_Functions_Advanced_Methods témakör ismerteti.
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ése nem jelent kivételt, ha egy sztringtömb logikai paraméterhez van kötve.
- Az
ValidateSet
attribútum és azValidatePattern
attribútum nem tud elnevezett paramétereket átadni. - A speciális függvények nem használhatók tranzakciókban.