- 10/27/2020
- 20 minutes to read
-
- S
- s
- s
- c
- g
Short description
Explains how to add parameters to advanced functions.,
lange beschrijving
u kunt parameters toevoegen aan de geavanceerde functies die u schrijft, enparameter attributen en argumenten gebruiken om de parameterwaarden te beperken die functionusers met de parameter indienen.
de parameters die u aan uw functie toevoegt, zijn beschikbaar voor gebruikers naast de algemene parameters die PowerShell automatisch toevoegt aan alle cmdlets en geavanceerde functies. Zie about_CommonParameters voor meer informatie over de PowerShell commonparameters.
begint in PowerShell 3.,0, U kunt splatting gebruiken met @Args
om de parameters in een commando weer te geven. Splatting is geldig op eenvoudige en geavanceerde functies. Voor meer informatie, zie about_Functions and about_splatting.
Type conversie van parameterwaarden
wanneer u strings als argumenten levert aan parameters die een andertype verwachten, converteert PowerShell impliciet De strings naar het parameter doeltype.Geavanceerde functies voeren cultuur-invariante parsing van parameterwaarden.
daarentegen wordt een cultuurgevoelige conversie uitgevoerd tijdens parameterbinding voor gecompileerde cmdlets.,
in dit voorbeeld maken we een cmdlet en een script functie die een parameter nemen. De huidige cultuur wordt gewijzigd om Duitse instellingen te gebruiken.Een Duits-geformatteerde datum wordt doorgegeven aan de parameter.
Dienstag, 19. Juni 2018 00:00:00
zoals hierboven getoond, gebruiken cmdlets cultuurgevoelige parsing om de tekenreeks te converteren.
geavanceerde functies gebruiken cultuur-invariante parsing, wat resulteert in de volgende fout.
statische parameters
statische parameters zijn parameters die altijd beschikbaar zijn in de functie.,De meeste parameters in PowerShell cmdlets en scripts zijn statische parameters.
het volgende voorbeeld toont de declaratie van een computernameparameter die de volgende kenmerken heeft:
- Het is verplicht (vereist).
- het neemt input van de pijplijn.
- het neemt een array van strings als invoer.
Param( ] $ComputerName)
attributen van parameters
Deze sectie beschrijft de attributen die u kunt toevoegen aan functieparameters.
alle attributen zijn optioneel., Echter, als je de CmdletBindingattribute weglaat, dan moet de functie het parameter attribuut omvatten om herkend te worden als een geavanceerde functie.
u kunt één of meerdere attributen toevoegen aan elke parameter declaratie. Er is geen limiet aan het aantal attributen dat u kunt toevoegen aan een parameterverklaring.
Parameter attribuut
Het Parameter attribuut wordt gebruikt om de attributen van functieparameters te declareren.
Het parameter attribuut is optioneel, en u kunt het weglaten als geen van de parameters van uw functies attributen nodig heeft., Maar om te worden herkend als een geavanceerde functie, in plaats van een eenvoudige functie, moet een functie hetzij het Cmdletbindingattribuut of het Parameter attribuut, of beide hebben.
het Parameter attribuut heeft argumenten die de kenmerken van de parameter definiëren, zoals of de parameter verplicht of facultatief is.
Gebruik de volgende syntaxis om het Parameter attribuut, een argument en een argumentwaarde te declareren. De haakjes die het argument en zijn waarde omsluiten moeten de Parameter volgen zonder tussenliggende spatie.,
Param( $ParameterName)
Gebruik komma ‘ s om argumenten tussen haakjes te scheiden. Gebruik de volgende syntaxis om twee argumenten van het Parameter attribuut te declareren.
Param( )
de Booleaanse argument types van het Parameter attribuut standaard te Falsewanneer weggelaten uit het Parameter attribuut. Stel de argumentwaarde in op$true
of vermeld het argument op naam. Bijvoorbeeld, de volgende parameter attributen zijn equivalent.,
Als u het parameter attribuut zonder argumenten gebruikt, als alternatief voor het cmdletbindingattribute attribuut, zijn de haakjes die volgen op de attribute naam nog steeds vereist.
Param( $ParameterName)
verplicht argument
het Mandatory
argument geeft aan dat de parameter vereist is. Als ditargument niet is opgegeven, is de parameter optioneel.
het volgende voorbeeld declareert de computernaam parameter. Het gebruikt het argumentMandatory
om de parameter verplicht te maken.,
Param( ] $ComputerName)
positieargument
het Position
argument bepaalt of de parameternaam vereist is wanneer de parameter in een opdracht wordt gebruikt. Wanneer een parameter declaratie het argumentPosition
bevat, kan de parameter naam worden weggelaten en PowerShell identificeert de naamloze parameter waarde door zijn positie, of volgorde, in de lijst van naamloze parameterwaarden in het commando.,
als het argument Position
niet is opgegeven, moet de parameternaam, of een parameternaam alias of afkorting, voorafgaan aan de parameterwaarde wanneer deparameter wordt gebruikt in een commando.
standaard zijn alle functieparameters positioneel. PowerShell wijst positienummers toe aan parameters in de volgorde waarin de parameters in de functie worden gedeclareerd. Om deze functie uit te schakelen, stelt u de waarde van het PositionalBinding
argument van het cmdletbindingattribuut in op $False
., HetPosition
argument heeft voorrang op de waarde van hetPositionalBinding
argument van het cmdletbindingattribuut. Voor meer informatie, zie PositionalBinding
in about_Functions_CmdletBindingAttribute.
de waarde van het Position
argument wordt opgegeven als een geheel getal. Een positiewaarde van 0 staat voor de eerste positie in het commando, een positiewaarde van 1 staat voor de tweede positie in het commando, enzovoort.,
als een functie geen positionele parameters heeft, wijst PowerShell posities toe aan elke parameter op basis van de volgorde waarin de parameters worden gedeclareerd.Echter, als een best practice, vertrouw niet op deze opdracht. Als u wilt datparameters positioneel zijn, gebruik dan het argument Position
.
het volgende voorbeeld declareert de computernaam parameter. Het gebruikt het argumentPosition
met een waarde van 0. Als gevolg hiervan, wanneer -ComputerName
wordt gecommitteerd vanuit het commando, moet de waarde ervan de eerste of enige naamloze parametervalue in het commando zijn.,
Param( ] $ComputerName)
ParameterSetName argument
het ParameterSetName
argument specificeert de parameter waartoe aparameter behoort. Als er geen parameterverzameling is opgegeven, behoort de parameter tot alle parameterverzamelingen die door de functie worden gedefinieerd. Daarom, om uniek te zijn, moet elke parameterset minstens één parameter hebben die geen lid is van een andere parameterset.
Note
voor een cmdlet of functie is er een limiet van 32 parametersets.,
het volgende voorbeeld declareert een computernaam parameter in deComputer
parameter set, een gebruikersnaam parameter in deUser
parameter set, en een samenvattende parameter in beide parametersets.
u kunt slechts één ParameterSetName
waarde opgeven in elk argument en slechts éénParameterSetName
argument in elk Parameter attribuut. Voeg extra Parameterattributen toe om aan te geven dat aparameter in meer dan één parameterset voorkomt.,
het volgende voorbeeld voegt expliciet de samenvatting parameter toe aan deComputer
en User
parametersets. De samenvatting parameter is optioneel in deComputer
parameter set en verplicht in deUser
parameter set.
voor meer informatie over parameterverzamelingen, zie Over Parameterverzamelingen.
ValueFromPipeline argument
het ValueFromPipeline
argument geeft aan dat de parameter input van een pijplijn object accepteert., Specificeer dit argument als de functie het hele object accepteert, niet alleen een eigenschap van het object.
het volgende voorbeeld declareert een computernaam parameter die verplicht is en accepteert een object dat is doorgegeven aan de functie van de pijplijn.
Param( ] $ComputerName)
Valuefipelinepropertyname argument
het ValueFromPipelineByPropertyName
argument geeft aan dat de parameterinvoer van een eigenschap van een pipeline-object accepteert. De eigenschap object moet dezelfde naam of alias hebben als de parameter.,
bijvoorbeeld, als de functie een ComputerName parameter heeft, en het pipedobject een ComputerName eigenschap heeft, wordt de waarde van de ComputerNameproperty toegewezen aan de ComputerName parameter van de functie.
het volgende voorbeeld declareert een computernaam parameter die verplicht is en accepteert input van de computernaam eigenschap van het object die via de pijplijn naar de functie is doorgegeven.,
Param( ] $ComputerName)
Note
een getypte parameter die pipeline-invoer accepteert (by Value
) of(by PropertyName
) maakt het gebruik van delay-bind scriptblokken op deparameter mogelijk.
het scriptblok delay-bind wordt automatisch uitgevoerd tijdens het vastleggen van parameters. Het resultaat is gebonden aan de parameter. Delaybinding werkt niet voor parameters gedefinieerd als type ScriptBlock
ofSystem.Object
. Het script blok wordt doorgegeven zonder te worden aangeroepen.
u kunt hier lezen over delay-bind scriptblokken about_Script_Blocks.md.,
Valueefromremainingarguments argument
het ValueFromRemainingArguments
argument geeft aan dat de parameter alle waarden van de parameter in het commando accepteert die niet aan andere parameters van de functie zijn toegewezen.
het volgende voorbeeld declareert een Waardeparameter die verplicht is en een mainingparameter die alle resterende parameterwaarden accepteert die aan de functie worden doorgegeven.
Found 2 elements0: one1: two
Note
vóór PowerShell 6.2 werd de waarde van het verzamelen van spaargelden samengevoegd als één entiteit onder index 0.,
helpmessage argument
het HelpMessage
argument specificeert een string die een korte beschrijving van de parameter of zijn waarde bevat. PowerShell toont dit bericht in de promptdat verschijnt wanneer een verplichte parameterwaarde ontbreekt in een commando. Ditargument heeft geen effect op optionele parameters.
het volgende voorbeeld declareert een verplichte computernaam parameter en een helpbericht dat de verwachte parameterwaarde uitlegt.,
als er geen andere comment-based help syntaxis is voor de functie (bijvoorbeeld .SYNOPSIS
) dan verschijnt dit bericht ook inGet-Help
uitvoer.
Param( ] $ComputerName)
Alias attribuut
het Alias attribuut bepaalt een alternatieve naam voor de parameter.Er is geen limiet aan het aantal aliassen dat u kunt toewijzen aan een parameter.
het volgende voorbeeld toont een parameter declaratie die de CN en machinename aliassen toevoegt aan de verplichte ComputerName parameter.,
Param( ] $ComputerName)
SupportsWildcards attribuut
het attribuut SupportsWildcards wordt gebruikt om aan te geven dat de parameter jokertekens accepteert. Het volgende voorbeeld toont een parameter declaratie voor een verplichte pad parameter die jokertekens ondersteunt.
Param( ] $Path)
door dit attribuut te gebruiken wordt ondersteuning met jokertekens niet automatisch ingeschakeld. De cmdletontwikkelaar moet de code implementeren om de invoer met jokertekens af te handelen. De jokertekens die worden ondersteund kunnen variëren afhankelijk van de onderliggende API of PowerShell provider. Voor meer informatie, zie about_Wildcards.,
Parameter-en variabele validatiekenmerken
Validatiekenmerken directe PowerShell om de parameterwaarden te testen die gebruikers indienen wanneer ze de geavanceerde functie aanroepen. Als de parameterwaarden de test niet halen, wordt een fout gegenereerd en wordt de functie niet aangeroepen. Parametervalidatiewordt alleen toegepast op de opgegeven invoer en andere waarden zoals standaardwaarden worden niet gevalideerd.
u kunt de validatiekenmerken ook gebruiken om de waarden te beperken die gebruikers voor variabelen kunnen opgeven., Wanneer u een type converter samen met avalidation attribuut gebruiken, het type converter moet worden gedefinieerd voor het attribuut.
$number = 7
AllowNull validation attribuut
Het AllowNull attribuut staat toe dat de waarde van een verplichte parameter$null
is. Het volgende voorbeeld verklaart een Hashtable computerinfo parameterdie een null waarde kan hebben.
Param( $ComputerInfo)
Note
Het AllowNull attribuut werkt niet als de type converter is ingesteld om de string als het string type geen null waarde accepteert., U kunt het alllowemptystring attribuut gebruiken voor dit scenario.
AllowEmptyString validation attribuut
Het AllowEmptyString attribuut staat toe dat de waarde van een verplichte parameter een lege string is (""
). Het volgende voorbeeld declareert een ComputerNameparameter die een lege string waarde kan hebben.
Param( $ComputerName)
AllowEmptyCollection validation attribuut
Het AllowEmptyCollection attribuut staat toe dat de waarde van een mandatoryparameter een lege verzameling is @()
., Het volgende voorbeeld declareert een computernaam parameter die een lege verzameling waarde kan hebben.
Param( ] $ComputerName)
validatecount validation attribuut
Het validatecount attribuut specificeert het minimum-en maximumaantal parameters dat een parameter accepteert. PowerShell genereert een fout als het aantal parameterwaarden in het commando dat de functie aanroept buiten het bereik ligt.
de volgende parameter declaratie maakt een computernaam parameter die een tot vijf parameterwaarden.,
Param( ] $ComputerName)
validatelength validation attribuut
Het validatelength attribuut specificeert het minimum-en maximumaantal tekens in een parameter of variabele waarde. PowerShell genereert een fout als de lengte van een waarde die is opgegeven voor een parameter of variabele buiten het bereik ligt.
in het volgende voorbeeld moet elke computernaam één tot tien tekens hebben.
Param( ] $ComputerName)
In het volgende voorbeeld moet de waarde van de variabele $number
een minimum van één teken in lengte zijn, en een maximum van tien tekens.,
$number = '01'
Note
in dit voorbeeld wordt de waarde van 01
verpakt in enkele aanhalingstekens. Het attribuut validatelength accepteert geen getal zonder inquotes te worden ingepakt.
validatepattern validation attribuut
Het validatepattern attribuut specificeert een reguliere expressie die ‘ in vergelijking met de parameter of variabele waarde. PowerShell genereert een fout als de waarde niet overeenkomt met het reguliere expressiepatroon.,
in het volgende voorbeeld moet de parameterwaarde een viercijferig getal bevatten en moet elk cijfer een getal van nul tot negen zijn.
Param( ")] ] $ComputerName)
In het volgende voorbeeld moet de waarde van de variabele $number
exact een viercijferig getal zijn, en elk cijfer moet een getal van nul tot negen zijn.
$")]$number = 1111
validaterange validation attribuut
Het validaterange attribuut specificeert een numeriek bereik of aValidateRangeKind enumwaarde voor elke parameter of variabele waarde.PowerShell genereert een fout als een waarde buiten dat bereik ligt.,
Het validaterangekind enum staat de volgende waarden toe:
- positief – een getal groter dan nul.
- negatief-een getal kleiner dan nul.
- Nietpositief-een getal kleiner dan of gelijk aan nul.
- Nonnegatief-een getal groter dan of gelijk aan nul.
in het volgende voorbeeld moet de waarde van de parameter pogingen tussen nul en tien liggen.
Param( $Attempts)
in het volgende voorbeeld moet de waarde van de variabele $number
tussen enzero en ten liggen.,
$number = 5
In het volgende voorbeeld moet de waarde van de variabele $number
groter zijn dan nul.
$number = 1
ValidateScript validation attribuut
Het validatescript attribuut specificeert een script dat wordt gebruikt om een aparameter of variabele waarde te valideren. PowerShell stuurt de waarde naar het script, en genereert een fout als het script $false
retourneert of als het script een uitzondering gooit.,
wanneer u het attribuut ValidateScript gebruikt, wordt de waarde die wordt gevalideerd toegewezen aan de variabele $_
. U kunt de variabele $_
gebruiken om naar de waarde in het script te verwijzen.
in het volgende voorbeeld moet de waarde van de EventDate parameter groter zijn dan of gelijk aan de huidige datum.
Param( $EventDate)
In het volgende voorbeeld moet de waarde van de variabele $date
groter zijn dan of gelijk aan de huidige datum en tijd.,
$date = (Get-Date)
Note
Als u ValidateScript gebruikt, kunt u een $null
waarde niet doorgeven aan deparameter. Wanneer u een null waarde passeert ValidateScript kan deargument niet valideren.
validateset attribuut
het attribuut ValidateSet specificeert een reeks geldige waarden voor een parametervariabele en schakelt tabs in. PowerShell genereert een fout als aparameter of variabele waarde niet overeenkomt met een waarde in de set. In het volgende voorbeeld kan de waarde van de detailparameter alleen Laag, Gemiddeld of hoog zijn.,
Param( ] $Detail)
in het volgende voorbeeld moet de waarde van de variabele $flavor
hetzij chocolaat, aardbei of vanille zijn.
$flavor = "Strawberry"
de validatie vindt plaats wanneer die variabele ook binnen het script wordt toegewezen. Bijvoorbeeld, de volgende resultaten in een fout tijdens runtime:
Param( $Message)$Message = "bye"
dynamische validateSet waarden
U kunt een klasse gebruiken om dynamisch de waarden voor ValidateSetat runtime te genereren., In het volgende voorbeeld worden de geldige waarden voor de variabele$Sound
worden gegenereerd via een Klasse met de naam SoundNames dat de controles threefilesystem paden voor geluid-bestanden:
De klasse is vervolgens geïmplementeerd als een dynamisch ValidateSet valueas volgt:
Param( )] $Sound)
ValidateNotNull validatie attribuut
De ValidateNotNull attribuut geeft aan dat de waarde van de parameter kan niet worden$null
. PowerShell genereert een fout als de parameterwaarde $null
is.,
het attribuut ValidateNotNull is ontworpen om te worden gebruikt wanneer de parameter optioneel is en het type niet gedefinieerd is of een type converter heeft die eenvoudig een null waarde zoals object kan converteren. Als u een type specificeert dat impliciet een null-waarde zoals een string zal converteren, wordt de null-waarde geconverteerd naar een lege string, zelfs wanneer u de ValidateNotNullattribute gebruikt. Gebruik voor dit scenario ValidateNotNullOrEmpty
In het volgende voorbeeld kan de waarde van de parameter ID niet $null
zijn.,
Param( $ID)
ValidateNotNullOrEmpty validation attribuut
het attribuut ValidateNotNullOrEmpty geeft aan dat de parameterwaarde niet $null
kan zijn en geen lege tekenreeks kan zijn (""
). PowerShell genereert een fout als de parameter wordt gebruikt in een functieaanroep, maar de waarde is $null
, een lege string (""
), of een lege array @()
.,
Param( ] $UserName)
ValidateDrive validation attribuut
het attribuut ValidateDrive geeft aan dat de parameterwaarde het pad moet vertegenwoordigen, dat alleen verwijst naar toegestane stations. PowerShell genereert een fout als de parameterwaarde verwijst naar andere schijven dan theallowed. Het bestaan van het pad, behalve de schijf zelf, wordt niet geverifieerd.
Als u relatief pad gebruikt, moet het huidige station in de lijst met toegestane schijven staan.,
Param( $Path)
ValidateUserDrive validation attribuut
het attribuut ValidateUserDrive geeft aan dat de parameterwaarde het pad moet vertegenwoordigen, dat verwijst naar User
station. PowerShell genereert anerror als het pad naar een ander station verwijst. Het validation attribuut test alleen voor het bestaan van het stationgedeelte van het pad.
Als u relatief pad gebruikt, moet het huidige station User
zijn.,
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.
u kunt User
drive in Just Enough Administration (JEA) sessionconfiguraties definiëren. In dit voorbeeld maken we de user: drive.
New-PSDrive -Name 'User' -PSProvider FileSystem -Root $env:HOMEPATH
True
ValidateTrustedData validation attribuut
dit attribuut is toegevoegd in PowerShell 6.1.1.
op dit moment wordt het attribuut intern gebruikt door PowerShell zelf en is het niet bedoeld voor extern gebruik.,
dynamische parameters
dynamische parameters zijn parameters van een cmdlet, functie of script die alleen onder bepaalde voorwaarden beschikbaar zijn.
bijvoorbeeld, verschillende provider-cmdlets hebben parameters die alleen beschikbaar zijn wanneer de cmdlet in het provider-station wordt gebruikt, of in een bepaald pad van het Provider-station. De Coderingsparameter is bijvoorbeeld alleen beschikbaar op deAdd-Content
,Get-Content
, enSet-Content
cmdlets als het wordt gebruikt in een bestandssysteem station.,
u kunt ook een parameter aanmaken die alleen verschijnt wanneer een andere parameter wordt gebruikt in het function commando of wanneer een andere parameter een bepaalde waarde heeft.
dynamische parameters kunnen nuttig zijn, maar gebruik ze alleen wanneer dat nodig is, omdat ze voor gebruikers moeilijk te ontdekken kunnen zijn. Om een dynamische parameter te vinden, moet de gebruiker zich in het providerpad bevinden, gebruik de ArgumentList parameter van deGet-Command
cmdlet, of gebruik de Path parameter van Get-Help
.
om een dynamische parameter voor een functie of script aan te maken, gebruikt u het sleutelwoord DynamicParam
.,
de syntaxis is als volgt:
DynamicParam {<statement-list>}
in de statement list, gebruik een If
statement om de voorwaarden te specificeren waaronder de parameter beschikbaar is in de functie.
Gebruik de New-Object
cmdlet om een systeem aan te maken.Management.Automatisering.RuntimeDefinedParameter object om de parameter weer te geven en de naam ervan op te geven.
u kunt een New-Object
commando gebruiken om een systeem aan te maken.Management.Automatisering.,ParameterAttribute object representattributes van de parameter, zoals verplicht, positie, Ofvaluefrompipeline of de parameterset.
het volgende voorbeeld toont een voorbeeldfunctie met standaardparameters namedName en Path, en een optionele dynamische parameter genaamd DP1. De DP1 parameter zit in dePSet1
parameter set en heeft een type van Int32
.,De parameter DP1 is alleen beschikbaar in de functie Get-Sample
als de waarde van de parameter pad begint met HKLM:
, wat aangeeft dat het wordt gebruikt in de HKEY_LOCAL_MACHINE
registry drive.
voor meer informatie, seeRuntimeDefinedParameter.
Schakelparameters
Schakelparameters zijn parameters zonder parameterwaarde. Ze werken alleen als ze gebruikt worden en hebben maar één effect.
bijvoorbeeld, de NoProfile parameter van powershell.exe is een switchparameter.,
om een schakelparameter in een functie aan te maken, specificeert u het Switch
type in deparameterdefinitie.
bijvoorbeeld:
Param(<ParameterName>)
of u kunt een andere methode gebruiken:
Param( $<ParameterName>)
Schakelparameters zijn eenvoudig te gebruiken en hebben de voorkeur boven Booleaanse parameters, die een moeilijkere syntaxis hebben.
bijvoorbeeld, om een switch parameter te gebruiken, typt de gebruiker de parameter in de opdracht.
-IncludeAll
om een Booleaanse parameter te gebruiken, typt de gebruiker de parameter en een Booleaanse waarde.,
-IncludeAll:$true
bij het maken van schakelparameters, kies de parameternaam zorgvuldig. Zorg ervoor dat de parameter naam het effect van de parameter aan de gebruiker communiceert.Vermijd dubbelzinnige termen, zoals Filter of Maximum dat zou kunnen impliceren avalue is vereist.
ArgumentCompleter attribuut
met het ArgumentCompleter attribuut kunt u tab-voltooiingswaarden toevoegen aan een specifieke parameter. Een ArgumentCompleter attribuut moet worden gedefinieerd voor elk parameter die Tab aanvulling nodig heeft., Net als DynamicParameters worden de beschikbare waarden berekend tijdens runtime wanneer de gebruiker op Tab na de parameternaam drukt.
om een ArgumentCompleter-attribuut toe te voegen, moet u een scriptblok definiëren dat de waarden bepaalt. Het script blok moet de volgende parameters nemen in de onderstaande volgorde. De namen van de parameter doen er niet toe omdat de waarden positioneel worden verstrekt.,
de syntaxis is als volgt:
ArgumentCompleter scriptblok
De scriptblokparameters zijn ingesteld op de volgende waarden:
-
$commandName
(positie 0) – Deze parameter is ingesteld op de naam van het commando waarvoor het scriptblok tabvoltooiing biedt. -
$parameterName
(positie 1) – Deze parameter is ingesteld op de parameter waarvan de waarde tabvoltooiing vereist. -
$wordToComplete
(positie 2) – Deze parameter is ingesteld om de waarde van de gebruiker te bepalen voordat ze op Tab drukken., Uw scriptblok moet deze waarde gebruiken om tabvoltooiing waarden te bepalen. -
$commandAst
(positie 3) – Deze parameter is ingesteld op de abstracte SyntaxTree (AST) voor de huidige invoerregel. Voor meer informatie, ziest Class. -
$fakeBoundParameters
(positie 4) – Deze parameter is ingesteld op een hashtabledat$PSBoundParameters
voor de cmdlet bevat, voordat de gebruiker op Tab drukt. Zie voor meer informatie over_automatic_variables.,
Het ArgumentCompleter scriptblok moet de waarden uitrollen met behulp van de pipeline, zoals ForEach-Object
, Where-Object
, of een andere geschikte methode.Het retourneren van een array van waarden zorgt ervoor dat PowerShell de volledige array behandelt als een tabvoltooiing.
het volgende voorbeeld voegt tabvoltooiing toe aan de Waardeparameter. Als alleen de waarde parameter is opgegeven, worden alle mogelijke waarden, of argumenten, forValue weergegeven. Wanneer de type parameter is opgegeven, toont de waarde parameter alleen de mogelijke waarden voor dat type.,
bovendien zorgt de operator -like
ervoor dat als de gebruiker het volgende commando typt en Tabvoltooiing gebruikt, alleen Apple wordt geretourneerd.
Test-ArgumentCompleter -Type Fruits -Value A
Zie ook:
about_Automatic_Variables
about_Functions
about_Functions_Advanced
about_Functions_Advanced_Methods
about_Functions_CmdletBindingAttribute
about_Functions_OutputTypeAttribute
Geef een reactie