Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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 PowerShell speciális függvényei és a CDXML-parancsmagok.
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 a CmdletBinding attribútummal azonosítják őket parancsmagként működő függvényekként. A CmdletBinding attribútum a lefordított parancsmagosztályokban használt Parancsmag attribútumhoz hasonló, amely az osztályt parancsmagként azonosítja. További információ erről az attribútumról: about_Functions_CmdletBindingAttribute.
A függvény paraméterei a param() utasításban deklarált változók. Az opcionális [Parameter()] attribútumot használhatja önállóan, vagy a [Alias()] attribútummal vagy a paraméterérvényesítési attribútumok bármelyikével együtt. További információ a paraméterek deklarálásáról: about_Functions_Advanced_Parameters.
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 + "!")
}
}
Ez a függvény elvégzi a munkát a process blokkban, amely egyenértékű a lefordított parancsmagokban használt ProcessingRecord metódusával. A process blokkot és a többi elnevezett blokkot a about_Functions_Advanced_Methodsismerteti.
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 jelent kivételt, ha egy sztringtömb egy logikai paraméterhez van kötve.
- A
ValidateSetattribútum és aValidatePatternattribútum nem tud elnevezett paramétereket átadni. - A speciális függvények nem használhatók tranzakciókban.
PIPELINESTOPTOKEN
A PowerShell 7.6-preview.4-től kezdődően $PSCmdlet tartalmazza a PipelineStopToken tulajdonságot, amely lehetővé teszi a CancellationToken a PowerShell-leállítási eseményforráshoz való hozzáférését. A jogkivonat akkor aktiválódik, amikor a PowerShell-folyamat leállítási kérelmet kap. Használjon egy .NET-metódust, amely CancellationToken túlterhelést fogad el, hogy kérés esetén kilépjen a metódusból ahelyett, hogy megvárná, amíg a metódus visszatér.
Az alábbi példában a függvény meghívja a HttpClient.GetStringAsync, ami időt vehet igénybe, amikor a hálózat lassú, vagy sok adatot ad vissza.
function Invoke-CancelableWebRequest {
[CmdletBinding()]
param(
[Parameter(Mandatory=$true)]
[string]
$Url
)
$client = [System.Net.Http.HttpClient]::new()
$client.GetStringAsync(
$Url,
$PSCmdlet.PipelineStopToken).GetAwaiter().GetResult()
}
Invoke-CancelableWebRequest -Url https://httpbin.org/delay/10
# Press ctrl+c to cancel