• 10/27/2020
  • 20 minutes to read
    • S
    • s
    • s
    • c
    • g

Short description

Explains how to add parameters to advanced functions.,

Hosszú leírás

paramétereket adhat hozzá az Ön által írt speciális funkciókhoz,valamint felhasználhatparaméter attribútumokat és érveket a paraméterértékek korlátozásához, amelyeket a functionusers a paraméterrel küld.

a funkcióhoz hozzáadott paraméterek a Felhasználók rendelkezésére állnak azon közös paramétereken kívül, amelyeket a PowerShell automatikusan hozzáad az összes parancsmaghoz éskifejezett funkciók. További információ a PowerShell commonparameters, lásd about_CommonParameters.

elején PowerShell 3.,0, akkor splatting @Args hogy képviselje a paramétereket egy parancs. Splatting érvényes egyszerű és fejlettfunkciókat. További információ: about_Functions andabout_Splatting.

paraméterértékek konvertálása ha argumentumként adja meg a karakterláncokat olyan paramétereknek, amelyek egy másik típusra számítanak, a PowerShell implicit módon konvertálja a karakterláncokat a paraméter céltípusává.A fejlett funkciók a paraméterértékek kultúra-invariáns elemzését végzik.

ezzel szemben egy kultúraérzékeny konverziót hajtanak végre a paraméterezés során az összeállított parancsmagok számára.,

ebben a példában létrehozunk egy parancsmagot és egy szkriptfüggvényt, amely paramétert vesz igénybe. A jelenlegi kultúra megváltozik a német beállítások használatára.Egy német formátumú dátum kerül átadásra a paraméternek.

Dienstag, 19. Juni 2018 00:00:00

a fentiek szerint a cmdlets kultúrérzékeny elemzéssel konvertálja a karakterláncot.

a speciális függvények A kultúra-invariáns elemzést használják, ami a következő hibát eredményezi.

statikus paraméterek

a statikus paraméterek olyan paraméterek, amelyek mindig rendelkezésre állnak a függvényben.,A PowerShell parancsfájlok és parancsfájlok legtöbb paramétere statikus paraméter.

a következő példa egy ComputerName paraméter deklarációját mutatja, amely a következő jellemzőkkel rendelkezik:

  • kötelező (kötelező).
  • bemenetet vesz igénybe a csővezetékből.
  • egy sor karakterláncot vesz bemenetként.
Param( ] $ComputerName)

paraméterek attribútumai

Ez a szakasz leírja azokat az attribútumokat, amelyeket hozzáadhat a funkcióparaméterekhez.

minden attribútum opcionális., Ha azonban kihagyja a CmdletBindingattribute-ot, akkor speciális funkcióként kell elismerni, a funkciónak kelltartalmazza a paraméter attribútumot.

minden paraméter-nyilatkozatban hozzáadhat egy vagy több attribútumot. Nincs korlátozva azon attribútumok száma, amelyeket hozzá lehet adni egy parameterdeclaration-hoz.

paraméter attribútum

a paraméter attribútum a functionparameters attribútumainak deklarálására szolgál.

a paraméter attribútum nem kötelező, de kihagyhatja, ha a funkciók paramétereinek egyikére sem van szükség attribútumokra., De ahhoz, hogy felismerjük anadvanced funkció helyett egy egyszerű függvény, egy függvénynek kell lenniea CmdletBinding attribútum vagy a paraméter attribútum, vagy mindkettő.

a paraméter attribútum argumentumokkal rendelkezik, amelyek meghatározzák a paraméter jellemzőit, például azt, hogy a paraméter kötelező vagy opcionális-e.

a paraméter attribútum, argumentum és argumentumérték deklarálásához használja a következő szintaxist. Az argumentumot és annak értékét tartalmazó zárójeleknek be kell tartaniuk a paramétert, nincs beavatkozási hely.,

Param( $ParameterName)

vesszővel elválaszthatja az érveket a zárójelben. Használja a followingsyntax-ot a paraméter attribútum két Argumentumának deklarálásához.

Param( )

a paraméter attribútum alapértelmezett logikai argumentumtípusai a Falsewhen elhagyva a paraméter attribútumból. Állítsa az argumentum értékét$true értékre, vagy csak sorolja fel az argumentumot név szerint. Például a következőparaméter attribútumok egyenértékűek.,

ha argumentumok nélkül használja a paraméter attribútumot, a CmdletBinding attribútum alternatívájaként továbbra is szükség van a theattribute nevet követő zárójelekre.

Param( $ParameterName)

kötelező argumentum

a Mandatory argumentum azt jelzi, hogy a paraméter szükséges. Ha ez nincs megadva, a paraméter opcionális.

a következő példa deklarálja a ComputerName paramétert. AMandatory argumentumot használja a paraméter kötelezővé tételéhez.,

Param( ] $ComputerName)

pozíció argumentum

a Position argumentum határozza meg, hogy a paraméter neve szükséges-EA paramétert egy parancsban használják. Amikor egy paraméter nyilatkozat tartalmazza aPosition érv, a paraméter neve elhagyható, de PowerShellidentifies a névtelen paraméter értéke a pozíció, vagy a megrendelés, a jegyzéke a névtelen paraméter értékeket a parancs.,

Ha a Position argumentum nincs megadva, akkor a paraméternévnek vagy a parametername aliasnak vagy rövidítésnek meg kell előznie a paraméterértéket, amikor aparamétert egy parancsban használják.

alapértelmezés szerint minden funkcióparaméter pozicionális. A PowerShell hozzárendeli a pozíciótszámokat a paraméterekhez abban a sorrendben, amelyben a paramétereket afunkcióban deklarálják. A funkció letiltásához állítsa be aPositionalBindingargumentum értékét a CmdletBinding attribútum$Falseértékre., APositionargumentum elsőbbséget élvez aPositionalBinding argumentum értékével szemben. További információ:PositionalBindingin about_Functions_CmdletBindingAttribute.

a Position argumentum értéke egész számként van megadva. A 0 pozícióvalue a parancs első pozícióját jelenti, az 1 pozícióérték a parancs második pozícióját stb.,

Ha egy függvénynek nincs pozicionális paramétere, a PowerShell a paraméterek deklarálásának sorrendje alapján minden paraméterhez hozzárendel pozíciókat.Legjobb gyakorlatként azonban ne támaszkodjon erre a feladatra. Ha azt szeretnénk ,paraméterek, hogy pozicionális, használja a Position argumentum.

a következő példa deklarálja a ComputerName paramétert. APosition argumentumot használja 0 értékkel. Ennek eredményeként, amikor a-ComputerName parancsból van megadva, annak értéke a parancs első vagy egyetlen meg nem nevezett paramétere.,

Param( ] $ComputerName)

ParameterSetName argumentum

a argumentum meghatározza azt a paraméterkészletet, amelyhez az aparameter tartozik. Ha nincs megadva paraméterkészlet, a paraméter tartozika függvény által meghatározott összes paraméterkészlet. Ezért, hogy egyedi legyen, mindegyikA paraméterkészletnek legalább egy olyan paraméterrel kell rendelkeznie, amely nem tagja másparaméterkészletnek.

Megjegyzés

egy cmdlet vagy függvény esetében 32 paraméterkészlet van korlátozva.,

a következő példa aComputerparaméterkészletben egy ComputerName paramétert, aUser paraméterkészletben egy felhasználónév paramétert, valamint mindkét paraméterkészletben aSummary paramétert deklarál.

csak egy értéket adhat meg minden argumentumban, és csak egy argumentumot minden paraméter attribútumban. Ha azt szeretné jelezni, hogy az aparameter egynél több paraméterkészletben jelenik meg, Adjon hozzá további Parameterattributes-t.,

a következő példa kifejezetten hozzáadja az összefoglaló paramétert aComputer és User paraméterkészletekhez. Az összefoglaló paraméter opcionális in Computer paraméterkészlet és kötelező a User paraméterkészletben.

a paraméterkészletekkel kapcsolatos további információkért lásd a Paraméterkészleteket.

ValueFromPipeline argumentum

a ValueFromPipeline argumentum azt jelzi, hogy a paraméter elfogadja az inputotegy csővezeték objektumból., Adja meg ezt az argumentumot, ha a függvény elfogadja aentire objektumot, nem csak az objektum tulajdonságát.

a következő példa egy ComputerName paramétert deklarál, amely kötelezőés Elfogad egy objektumot, amely a csővezetékből jut el a függvényhez.

Param( ] $ComputerName)

ValueFromPipelineByPropertyName argumentum

a ValueFromPipelineByPropertyName argumentum azt jelzi, hogy a parameteraccepts bemenet egy csővezeték objektum tulajdonságából. Az objektum tulajdonságnak meg kell felelnieazonos névvel vagy álnévvel rendelkezik, mint a paraméter.,

például, ha a függvény ComputerName paraméterrel rendelkezik, a pipedobject pedig ComputerName tulajdonsággal rendelkezik, akkor a ComputerNameproperty értéke a függvény ComputerName paraméteréhez van rendelve.

a következő példa egy ComputerName paramétert deklarál, amely kötelezőés elfogadja az objektum ComputerName tulajdonságának bemenetét, amely átkerülta függvény a csővezetéken keresztül.,

Param( ] $ComputerName)

Megjegyzés

a pipeline bemenetet elfogadó gépelt paraméter (by Value) vagy(by PropertyName) lehetővé teszi a delay-bind szkriptblokkok használatát aparaméteren.

a delay-bind parancsfájl blokk automatikusan futparameterbinding. Az eredmény a paraméterhez van kötve. Delay bindingdoes not work for parameters defined as type ScriptBlockorSystem.Object. A szkriptblokk átkerül anélkül, hogy hivatkoznának.

itt olvashat a delay-bind szkriptblokkokról about_Script_Blocks.md.,

ValueFromRemainingArguments argumentum

The ValueFromRemainingArguments argumentum azt jelzi, hogy a paraméter elfogadjaaz összes paraméter értékét a parancsban, amely nincs hozzárendelve máshoza függvény paraméterei.

a következő példa egy kötelező Értékparamétert deklarál, valamint egy aRemaining paramétert, amely elfogadja a függvényhez benyújtott összes többi paraméterértéket.

Found 2 elements0: one1: two

Megjegyzés

a PowerShell 6.2 előtt a ValueFromRemainingArguments gyűjteményt egyetlen entitásként egyesítették a 0.index alatt.,

HelpMessage argumentum

a HelpMessage argumentum olyan karakterláncot határoz meg, amely a paraméter rövid leírását vagy értékét tartalmazza. PowerShell megjeleníti ezt az üzenetet a promptez akkor jelenik meg, ha egy kötelező paraméter értéke hiányzik a parancsot. Ez az argumentum nincs hatással az opcionális paraméterekre.

a következő példa kötelező ComputerName paramétert és ahelp üzenetet jelenít meg, amely megmagyarázza a várható paraméterértéket.,

ha nincs más megjegyzés alapú Súgó syntaxfor a funkció (például, .SYNOPSIS), akkor ez az üzenet is megjelenik aGet-Help kimenet.

Param( ] $ComputerName)

Alias attribútum

az Alias attribútum alternatív nevet hoz létre a paraméter számára.Nincs korlátozva azon álnevek száma, amelyeket hozzárendelhet egy paraméterhez.

a következő példa egy paraméter deklarációt mutat, amely hozzáadja a CN andMachineName álneveket a kötelező ComputerName paraméterhez.,

Param( ] $ComputerName)

SupportsWildcards attribútum

a SupportsWildcards attribútum jelzi, hogy a parameteraccepts helyettesítő karakterek értékei. A következő példa egy paraméter deklarációt mutategy kötelező elérési út paraméterhez, amely támogatja a helyettesítő értékeket.

Param( ] $Path)

az attribútum használata nem engedélyezi automatikusan a helyettesítő kártya támogatását. A cmdletdeveloper kell végrehajtani a kódot kezelni a helyettesítő bemenet. A wildcardssupported az alapul szolgáló API vagy PowerShell szolgáltató szerint változhat. Formore információ, lásd about_Wildcards.,

paraméter és változó validációs attribútumok

Validation attribútumok direct PowerShell tesztelni a paraméter értékeket, amelyek userssubmit, amikor hívják a fejlett függvény. Ha a paraméterértékek hibátlanok, hiba keletkezik, és a függvény nem hívódik meg. A paraméter validationis csak a megadott bemenetre vonatkozik, és más értékek, például az alapértelmezett értékek nem validáltak.

az érvényesítési attribútumok segítségével korlátozhatja azokat az értékeket is, amelyeket a felhasználók megadhatnak a változók számára., Ha típusátalakítót használ az avalidation attribútummal együtt, a típusátalakítót az attribútum előtt kell meghatározni.

 $number = 7

AllowNull validation attribútum

az AllowNull attribútum lehetővé teszi, hogy egy kötelező paraméter értéke$nulllegyen. A következő példa deklarál egy hashtable ComputerInfo parameterthat lehet egy null értéket.

Param( $ComputerInfo)

Megjegyzés

az AllowNull attribútum nem működik, ha a type converter be van állítva toString mint a string típus nem fogadja el a null értéket., Használhatja theAllowEmptyString attribútum erre a forgatókönyvre.

AllowEmptyString validation attribútum

az AllowEmptyString attribútum lehetővé teszi egy kötelező paraméter értékétlegyen egy üres karakterlánc (""). A következő példa egy számítógépet deklarálameparaméter, amelynek üres karakterlánc értéke lehet.

Param( $ComputerName)

AllowEmptyCollection validation attribútum

az AllowEmptyCollection attribútum lehetővé teszi, hogy egy mandatoryparameter értéke üres gyűjtemény legyen @()., A következő példa deklarálja aComputerName paraméter, amely lehet egy üres gyűjtemény értéke.

Param( ] $ComputerName)

ValidateCount validation attribútum

a ValidateCount attribútum megadja a paraméter által elfogadott paraméterértékek minimális és maximális számát. A PowerShell hibát generál, ha aa függvényt hívó parancs paraméterértékeinek száma kívül esikez a tartomány.

a következő paraméter deklaráció létrehoz egy ComputerName paramétert, amelyegy-öt paraméterértéket vesz fel.,

Param( ] $ComputerName)

ValidateLength validation attribútum

a ValidateLength attribútum megadja a paraméterek vagy változóértékek minimális és maximális számát. A PowerShell hibát generál, haa paraméterhez vagy változóhoz megadott érték hossza a tartományon kívül esik.

a következő példában minden számítógép nevének egy-tíz karakternek kell lennie.

Param( ] $ComputerName)

a következő példában a$number változó értékének minimálisnak, legfeljebb tíz karakternek kell lennie.,

$number = '01'

Megjegyzés

ebben a példában a 01 értéke egyetlen idézőjelbe van csomagolva. TheValidateLength attribútum nem fogad el egy számot anélkül, hogy csomagolva inquotes.

ValidatePattern validation attribútum

a ValidatePattern attribútum egy reguláris kifejezést határoz meg, amely a paraméterhez vagy a változó értékhez tartozik. A PowerShell hibát generál, haaz érték nem egyezik meg a reguláris kifejezésmintával.,

a következő példában a paraméterértéknek négyjegyű számot kell tartalmaznia, minden számjegynek nulla-kilenc számnak kell lennie.

Param( ")] ] $ComputerName)

a következő példában a$number változó értékének pontosan négyjegyű számnak kell lennie, és minden számjegynek nulláról kilencre kell lennie.

$")]$number = 1111

ValidateRange validation attribútum

a ValidateRange attribútum minden paraméterhez vagy változó értékhez numerikus tartományt vagy avalidaterangekind enum értéket határoz meg.A PowerShell hibát generál, ha bármely érték ezen a tartományon kívül van.,

a ValidateRangeKind enum a következő értékeket teszi lehetővé:

  • pozitív – nullánál nagyobb szám.
  • negatív-nullánál kisebb szám.
  • NonPositive-a szám kisebb vagy egyenlő nullával.
  • NonNegative-nullánál nagyobb vagy egyenlő szám.

a következő példában a kísérletek paraméter értéke nulla és tíz között legyen.

Param( $Attempts)

a következő példában a $number változó értéke között kell lennie.,

$number = 5

a következő példában a $number változónak nagyobbnak kell lenniemint nulla.

$number = 1

ValidateScript validation attribútum

a ValidateScript attribútum olyan szkriptet ad meg, amelyet az aparameter vagy változó érték érvényesítésére használnak. PowerShell csövek az értéket a script, ésgenerál hibát, ha a script visszatér $false vagy ha a script dob anexception.,

a ValidateScript attribútum használatakor az érvényesített érték a $_ változóra van leképezve. A$_ változó segítségével hivatkozhat a parancsfájl értékére.

a következő példában az EventDate paraméter értékének nagyobbnak kell lennie, mint vagy egyenlő az aktuális dátummal.

Param( $EventDate)

a következő példában a $date változónak nagyobbnak kell lennie, vagy egyenlőnek kell lennie az aktuális dátummal és idővel.,

$date = (Get-Date)

Megjegyzés

Ha Validatescriptet használ, akkor nem adhat át egy $null értéket aparaméternek. Ha át egy null érték ValidateScript nem tudja érvényesíteni theargument.

ValidateSet attribútum

a ValidateSet attribútum egy paraméterező változó érvényes értékeit határozza meg, és lehetővé teszi a lap kitöltését. A PowerShell hibát generál, ha az aparameter vagy a változó értéke nem egyezik meg a készlet egyik értékével. A következőbenegy példa, a Részletparaméter értéke csak alacsony, átlagos vagymagas.,

a következő példában a $flavor változó értékének eitherChocolate, eper vagy vanília értékűnek kell lennie.

$flavor = "Strawberry"

az érvényesítés akkor történik, amikor a változót még az Indexen belül is hozzárendelik. Például, a következő eredmények hibát runtime:

Param( $Message)$Message = "bye"

dinamikus validateSet értékek

egy osztály segítségével dinamikusan generálja az értékeket ValidateSetat runtime., A következő példában a$Sound változó érvényes értékei egy SoundNames nevű osztályon keresztül jönnek létre, amely a rendelkezésre álló hangfájlok threefilesystem útvonalait ellenőrzi:

a osztály dinamikus ValidateSet értékként kerül végrehajtásra:

Param( )] $Sound)

validatenotnull validation attribútum

a validatenotnull attribútum meghatározza, hogy a paraméter értéke nem lehet$null. A PowerShell hibát generál, ha a paraméter értéke $null.,

a ValidateNotNull attribútum akkor használható, ha a paraméter opcionálisan van definiálva, vagy olyan típusú átalakítóval rendelkezik, amely ” implicit módon konvertálhat egy null értéket, mint az objektum. Ha olyan típust ad meg, amely implicit módon konvertál egy null értéket, például egy karakterláncot, akkor a null értékegy üres karakterláncra konvertálódik, még akkor is, ha a ValidateNotNullattribute-ot használja. Ebben a forgatókönyvben használja a ValidateNotNullOrEmpty

a következő példában az ID paraméter értéke nem lehet $null.,

Param( $ID)

ValidateNotNullOrEmpty validation attribútum

a ValidateNotNullOrEmpty attribútum meghatározza, hogy a valuecan ‘t be $null és nem lehet üres karakterlánc (""). A PowerShell anerrort generál, ha a paramétert függvényhívásban használják, de értéke $null, anempty string (""), vagy egy üres tömb @().,

Param( ] $UserName)

ValidateDrive validation attribútum

a ValidateDrive attribútum meghatározza, hogy a paraméterértéknek meg kell jelenítenie az elérési utat, ami csak az engedélyezett meghajtókra vonatkozik. PowerShellgenerates hibát, ha a paraméter értéke utal meghajtók eltérő theallowed. Az út létezése, kivéve magát a meghajtót, nem ellenőrizhető.

ha relatív elérési utat használ, az aktuális meghajtónak az engedélyezett meghajtólistában kell lennie.,

Param( $Path)

ValidateUserDrive validation attribútum

a ValidateUserDrive attribútum meghatározza, hogy a paraméterértéknek meg kell felelnieaz elérési utat, amely a User meghajtóra utal. A PowerShell anerrort generál, ha az elérési út egy másik meghajtóra utal. Csak az érvényesítési attribútumtesztek az útvonal meghajtó részének létezésére.

relatív útvonal használata esetén az aktuális meghajtónak Userkell lennie.,

Test-UserDrivePath: Cannot validate argument on parameter 'Path'. The pathargument drive C does not belong to the set of approved drives: User.Supply a path argument with an approved drive.
Test-UserDrivePath -Path 'User:\A_folder_that_does_not_exist'
Test-UserDrivePath: Cannot validate argument on parameter 'Path'. Cannotfind drive. A drive with the name 'User' does not exist.

meghatározhatja User drive in Just Enough Administration (JEA) sessionconfigurations. Ebben a példában létrehozzuk a felhasználót: meghajtó.

New-PSDrive -Name 'User' -PSProvider FileSystem -Root $env:HOMEPATH
True

ValidateTrustedData validation attribútum

ezt az attribútumot a PowerShell 6.1.1.

jelenleg az attribútumot maga a PowerShell használja belsőleg, és nem külső használatra szánják.,

dinamikus paraméterek

a dinamikus paraméterek olyan cmdlet, függvény vagy szkript paraméterei, amelyek csak bizonyos körülmények között érhetők el.

például több szolgáltató parancsmag olyan paraméterekkel rendelkezik, amelyek csak akkor érhetők el, ha a parancsmagot a Szolgáltató meghajtóban használják, vagy a Szolgáltató meghajtó egy adott elérési útján. Például a kódolási paraméter elérhető aAdd-Content, Get-Content, és Set-Content cmdlets csak akkor, ha az ina fájlrendszer meghajtót használja.,

olyan paramétert is létrehozhat, amely csak akkor jelenik meg, ha egy másik paramétert használ a funkcióparancsban, vagy ha egy másik paraméternek van egy bizonyos értéke.

A dinamikus paraméterek hasznosak lehetnek, de csak akkor használják őket, ha szükséges, mertnehéz lehet a felhasználók számára felfedezni. Dinamikus paraméter megtalálásához a Felhasználónak a Szolgáltató elérési útján kell lennie, használja aGet-Command cmdlet ArgumentList paraméterét, vagy használja a Get-Helpelérési paraméterét.

egy függvény vagy szkript dinamikus paraméterének létrehozásához használja a DynamicParam kulcsszót.,

a szintaxis a következő:

DynamicParam {<statement-list>}

a kimutatáslistában használjon egy If nyilatkozatot a feltételek meghatározásáraamelyben a paraméter elérhető a függvényben.

használja aNew-Object cmdlet létrehozni aSystem.Menedzsment.Automatizálás.RuntimeDefinedParameter objektum, hogy képviselje a paramétert, majd adja meg a nevét.

használhatja a New-Object parancsot aSystem létrehozásához.Menedzsment.Automatizálás.,ParameterAttribute objektum, hogy képviseljea paraméter attribútumai, például kötelező, pozíció, orValueFromPipeline vagy annak paraméterkészlete.

a következő példa egy szabványos paraméterekkel rendelkező mintafunkciót mutat nevnevet és elérési utat, valamint egy opcionális dinamikus paramétert, a DP1-et. A dp1 paraméter a PSet1paraméterkészletben található, és a Int32 típusú.,A dp1 paraméter csak akkor érhető el a Get-Sample függvényben, ha a Path paraméter értéke HKLM: – vel kezdődik, jelezve, hogy a HKEY_LOCAL_MACHINE rendszerleíró meghajtóban használják.

további információért, seeRuntimeDefinedParameter.

kapcsoló paraméterek

a kapcsoló paraméterek paraméter nélküli paraméterek. Csak akkor hatékonyak, ha használják őket, és csak egy hatásuk van.

például a powershell NoProfile paramétere.az exe egy kapcsolóparaméter.,

kapcsoló paraméter létrehozásához egy függvényben adja meg aSwitch típust aparaméter definícióban.

például:

Param(<ParameterName>)

vagy, akkor egy másik módszer:

Param( $<ParameterName>)

kapcsoló paraméterek könnyen használható,és előnyben részesítik a Boolean paraméterek, amelyek egy nehezebb szintaxist.

például egy kapcsoló paraméter használatához a felhasználó beírja a paramétert a parancsmezőbe.

-IncludeAll

logikai paraméter használatához a felhasználó beírja a paramétert és a logikai értéket.,

-IncludeAll:$true

kapcsoló paraméterek létrehozásakor gondosan válassza ki a paraméter nevét. Ügyeljen arra, hogy a paraméter neve kommunikálja a paraméter hatását a felhasználónak.Kerülje a kétértelmű kifejezéseket, például a szűrőt vagy a maximumot, ami azt jelentheti, hogy avalue szükséges.

ArgumentCompleter attribútum

az ArgumentCompleter attribútum lehetővé teszi a lap kitöltési értékeinek hozzáadását egy adott paraméterhez. Az ArgumentCompleter attribútumot meg kell határozniminden olyan paramétert, amely a lap befejezését igényli., A Dynamicparameterekhez hasonlóan a rendelkezésre álló értékeket futásidőben számítják ki, amikor a felhasználó megnyomja a fületa paraméter neve után.

ArgumentCompleter attribútum hozzáadásához meg kell adnia egy szkriptblokkot, amely meghatározza az értékeket. A szkriptblokknak a következőket kell tennieparamétereket az alábbiakban megadott sorrendben. A paraméter neve nem számítaz értékek pozicionálisan vannak megadva.,

A szintaxis a következő:

ArgumentCompleter script

A script paraméterek vannak beállítva, hogy a következő értékek:

  • $commandName (Pozíció 0) – Ez a paraméter beállítása a neve thecommand, amely a script nyújt lap befejezését.
  • $parameterName (1.pozíció) – Ez a paraméter arra a paraméterre van állítva, amelyekaz érték megköveteli a lap befejezését.
  • $wordToComplete (2.pozíció) – Ez a paraméter a felhasználó által megadott értékre van állítvafeltéve, hogy megnyomták a Tab., A szkriptblokknak használnia kellez az érték a lap kitöltési értékeinek meghatározásához.
  • $commandAst (3.pozíció) – Ez a paraméter az aktuális bemeneti vonal absztrakt SyntaxTree (AST) értékére van állítva. További információ: seeAst Class.
  • $fakeBoundParameters(4.pozíció) – Ez a paraméter egy hashtablecontaining a $PSBoundParameters a cmdlet, mielőtt a felhasználó pressedTab. További információ: seeabout_Automatic_Variables.,

az ArgumentCompleter szkriptblokknak ki kell tekernie az értékeket aipeline használatával, például a ForEach-Object, Where-Object vagy más megfelelő módszer.Az értékek tömb visszatérése miatt a PowerShell a teljes tömböt az egyik lap kitöltési értékeként kezeli.

a következő példa hozzáadja a lap kitöltését az Értékparaméterhez. Ha csakaz Értékparaméter meg van adva, az összes lehetséges érték vagy argumentum megjelenik a forValue-ban. A Típusparaméter megadásakor a value paraméter csak az adott típus lehetséges értékeit jeleníti meg.,

ezenkívül a -like operátor biztosítja, hogy ha a felhasználó beírja a következő parancsot, és a lap kitöltését használja, csak az Apple kerül visszaadásra.

Test-ArgumentCompleter -Type Fruits -Value A

Lásd még:

about_Automatic_Variables

about_Functions

about_functions_advanced_methods

about_Functions_CmdletBindingAttribute

about_functions_outputtypeattribute