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

Short description

Explains how to add parameters to advanced functions.,

długi opis

możesz dodawać parametry do zaawansowanych funkcji, które piszesz, oraz używać atrybutów i argumentów, aby ograniczyć wartości parametrów, które funkcjoniści przesyłają z parametrem.

parametry, które dodajesz do swojej funkcji, są dostępne dla użytkowników oprócz wspólnych parametrów, które PowerShell dodaje automatycznie do wszystkich cmdletów i zaawansowanych funkcji. Aby uzyskać więcej informacji na temat parametrów PowerShell Common, zobacz about_CommonParameters.

począwszy od PowerShell 3.,0, możesz użyć splattingu z @Args do reprezentowania parametrów w poleceniu. Splatting jest ważny na prostych i zaawansowanych funkcjach. Aby uzyskać więcej informacji, zobacz about_Functions andabout_Splatting.

Typ Konwersja wartości parametrów

gdy dostarczasz ciągi znaków jako argumenty do parametrów, które oczekują innego typu, PowerShell domyślnie konwertuje ciągi znaków na typ parametru docelowego.Zaawansowane funkcje wykonują niezmienne dla kultury parsowanie wartości parametrów.

natomiast konwersja wrażliwa na kulturę jest wykonywana podczas parametrbindingu dla skompilowanych cmdletów.,

w tym przykładzie tworzymy cmdlet i funkcję skryptu, która przyjmuje parametr. Obecna kultura została zmieniona na niemiecką.Do parametru przekazywana jest data sformatowana w języku niemieckim.

Dienstag, 19. Juni 2018 00:00:00

jak pokazano powyżej, cmdlety używają przetwarzania wrażliwego na kulturę do konwersji łańcucha.

zaawansowane funkcje wykorzystują parsowanie niezmiennicze kultury, co powoduje następujący błąd.

parametry statyczne

parametry statyczne są parametrami, które są zawsze dostępne w funkcji.,Większość parametrów w cmdletach PowerShell i skryptach to parametry statyczne.

poniższy przykład pokazuje deklarację parametru nazwy komputera, który ma następujące cechy:

  • jest to obowiązkowe (wymagane).
  • pobiera dane wejściowe z potoku.
  • pobiera tablicę łańcuchów jako wejście.
Param( ] $ComputerName)

atrybuty parametrów

Ta sekcja opisuje atrybuty, które można dodać do parametrów funkcji.

wszystkie atrybuty są opcjonalne., Jeśli jednak pominiesz CmdletBindingattribute, to aby funkcja była rozpoznawana jako funkcja zaawansowana, funkcja musi zawierać atrybut parametru.

możesz dodać jeden lub wiele atrybutów w każdej deklaracji parametrów. Nie ma ograniczeń co do liczby atrybutów, które można dodać do deklaracji parametru.

atrybut parametru

atrybut parametru służy do deklarowania atrybutów parametru.

atrybut parametru jest opcjonalny i możesz go pominąć, jeśli żaden z parametrów Twoich funkcji nie potrzebuje atrybutów., Ale, aby zostać rozpoznanym jako funkcja zaawansowana, a nie Prosta funkcja, funkcja musi mieć atrybut CmdletBinding lub atrybut parametru, lub oba te atrybuty.

atrybut parametru ma argumenty, które definiują właściwości parametru, takie jak to, czy parametr jest obowiązkowy czy opcjonalny.

użyj następującej składni, aby zadeklarować atrybut parametru,argument i wartość argumentu. Nawiasy, które zawierają argument i jego wartość, muszą podążać za parametrem bez odstępu.,

Param( $ParameterName)

używaj przecinków do oddzielania argumentów w nawiasach. Użyj następującegosyntax zadeklarować dwa argumenty atrybutu parametru.

Param( )

typy argumentów logicznych atrybutu parametru domyślnie Falsewen pominięte w atrybucie parametru. Ustaw wartość argumentu na$true lub po prostu wymień argument po nazwie. Na przykład następujące atrybuty parametru są równoważne.,

Jeśli używasz atrybutu parametru bez argumentów, jako alternatywy dla atrybutu CmdletBinding, nawiasy, które następują po nazwie theattribute są nadal wymagane.

Param( $ParameterName)

argument obowiązkowy

argumentMandatory wskazuje, że parametr jest wymagany. Jeśli tenargument nie jest określony, parametr jest opcjonalny.

poniższy przykład deklaruje parametr ComputerName. Używa argumentuMandatory, aby parametr był obowiązkowy.,

Param( ] $ComputerName)

argument pozycyjny

argumentPosition określa, czy nazwa parametru jest wymagana, gdy parametr jest używany w poleceniu. Jeśli deklaracja parametru zawiera argumentPosition, nazwa parametru może zostać pominięta, a PowerShell identyfikuje nienazwaną wartość parametru według jego pozycji lub kolejności na liście nienazwanych wartości parametrów w poleceniu.,

jeśli argumentPosition nie jest określony, nazwa parametru lub alias lub skrót nazwy parametru musi poprzedzać wartość parametru za każdym razem, gdy parametr jest używany w poleceniu.

domyślnie wszystkie parametry funkcji są pozycyjne. PowerShell przypisuje numery pozycji do parametrów w kolejności, w jakiej parametry są deklarowane w funkcji. Aby wyłączyć tę funkcję, ustaw wartość argumentuPositionalBindingatrybutu CmdletBinding na$False., ArgumentPositionma pierwszeństwo przed wartością argumentuPositionalBinding atrybutu CmdletBinding. Aby uzyskać więcej informacji, zobacz PositionalBindingw about_Functions_CmdletBindingAttribute.

wartość argumentuPosition jest określona jako liczba całkowita. Wartość positionvalue 0 reprezentuje pierwszą pozycję w poleceniu, wartość positionof 1 reprezentuje drugą pozycję w poleceniu i tak dalej.,

Jeśli funkcja nie ma parametrów pozycyjnych, PowerShell przypisuje pozycje do każdego parametru na podstawie kolejności, w jakiej parametry są deklarowane.Jednak jako najlepsza praktyka nie polegaj na tym zadaniu. Gdy chcesz, aby parametry były pozycyjne, użyj argumentu Position.

poniższy przykład deklaruje parametr ComputerName. Używa argumentuPosition o wartości 0. W rezultacie, gdy -ComputerName jest pobierane z polecenia, jego wartość musi być pierwszą lub jedyną nienazwaną parametervalue w poleceniu.,

Param( ] $ComputerName)

Parametretname argument

ParameterSetName argument określa zestaw parametrów, do których należy aparat. Jeżeli nie podano żadnego zestawu parametrów, parametr należy do wszystkich zestawów parametrów zdefiniowanych przez funkcję. Dlatego, aby być unikalnym, każdy zestaw parametrów musi mieć co najmniej jeden parametr, który nie należy do żadnego innego zestawu parametrów.

Uwaga

dla cmdleta lub funkcji istnieje limit 32 zestawów parametrów.,

poniższy przykład deklaruje parametr ComputerName w zestawie parametrówComputer, parametr UserName w zestawie parametrówUser oraz parametr sumaryczny w obu zestawach parametrów.

możesz podać tylko jedenParameterSetName wartość w każdym argumencie i tylko jedenParameterSetName argument w każdym atrybucie parametru. Aby wskazać, że aparat pojawia się w więcej niż jednym zestawie parametrów, dodaj dodatkowy Parametrtrybuty.,

poniższy przykład jawnie dodaje parametr sumaryczny do zestawów parametrówComputerI User. Parametr sumaryczny jest opcjonalny W Zestawie parametrów Computer I obowiązkowy w zestawie parametrów User.

aby uzyskać więcej informacji na temat zestawów parametrów, zobacz Informacje o zestawach parametrów.

ValueFromPipeline argument

ValueFromPipeline argument wskazuje, że parametr akceptuje wejście z obiektu pipeline., Podaj ten argument, jeśli funkcja akceptuje obiekt, a nie tylko właściwość obiektu.

poniższy przykład deklaruje parametr ComputerName, który jest obowiązkowy i akceptuje obiekt przekazany do funkcji z potoku.

Param( ] $ComputerName)

ValueFromPipelineByPropertyName argument

ValueFromPipelineByPropertyName argument wskazuje, że parametr przyjmuje dane wejściowe z właściwości obiektu pipeline. Właściwość obiektu musi mieć taką samą nazwę lub alias jak parametr.,

na przykład, jeśli funkcja ma parametr ComputerName, a pipedobject ma właściwość ComputerName, wartość ComputerNameproperty jest przypisana do parametru ComputerName funkcji.

poniższy przykład deklaruje parametr ComputerName, który jest obowiązkowy i akceptuje dane wejściowe z właściwości ComputerName obiektu, które są przekazywane do funkcji przez rurociąg.,

Param( ] $ComputerName)

Uwaga

wpisany parametr, który akceptuje wejście potoku (by Value) lub (by PropertyName), umożliwia użycie bloków skryptu delay-bind na parametrze.

blok skryptów delay-bind jest uruchamiany automatycznie podczas parameterbinding. Wynik jest związany z parametrem. Opóźnienie bindowania nie działa dla parametrów zdefiniowanych jako typ ScriptBlock lubSystem.Object. Blok skryptów jest przekazywany bez wywoływania.

o blokach skryptów delay-bind możesz przeczytać tutaj about_Script_Blocks.md.,

ValueFromRemainingArguments argument

argument ValueFromRemainingArguments wskazuje, że parametr akceptuje wszystkie wartości parametru w poleceniu, które nie są przypisane do innych parametrów funkcji.

poniższy przykład deklaruje parametr Value, który jest obowiązkowy oraz parametr faining, który akceptuje wszystkie pozostałe wartości parametrów przesłane do funkcji.

Found 2 elements0: one1: two

Uwaga

przed wersją PowerShell 6.2 Kolekcja ValueFromRemainingArguments była dołączona jako jedna jednostka w indeksie 0.,

helpmessage argument

HelpMessage argument określa łańcuch zawierający Krótki opis parametru lub jego wartość. PowerShell wyświetla ten Komunikat w monicie, który pojawia się, gdy w poleceniu brakuje obowiązkowej wartości parametru. Niniejszy dokument nie ma wpływu na parametry opcjonalne.

poniższy przykład deklaruje obowiązkowy parametr ComputerName oraz komunikat ahelp wyjaśniający oczekiwaną wartość parametru.,

Jeśli dla funkcji nie ma innej składni pomocy opartej na komentarzach (na przykład .SYNOPSIS), to ten komunikat pojawia się również wGet-Help.

Param( ] $ComputerName)

atrybut Alias

atrybut Alias ustanawia alternatywną nazwę dla parametru.Nie ma ograniczeń co do liczby aliasów, które można przypisać do parametru.

poniższy przykład pokazuje deklarację parametrów, która dodaje aliasy CN i MachineName do obowiązkowego parametru ComputerName.,

Param( ] $ComputerName)

atrybut SupportsWildcards

atrybut SupportsWildcards jest używany do wskazania, że parametr przyjmuje wartości wieloznaczne. Poniższy przykład pokazuje deklarację parametru dla obowiązkowego parametru ścieżki, który obsługuje wartości wieloznaczne.

Param( ] $Path)

używanie tego atrybutu nie włącza automatycznie obsługi symboli wieloznacznych. Cmdletdeveloper musi zaimplementować kod, aby obsłużyć wejście wieloznaczne. Wildcardssupported może się różnić w zależności od podstawowego interfejsu API lub dostawcy PowerShell. Więcej informacji, patrz about_Wildcards.,

atrybuty walidacji parametrów i zmiennych

atrybuty walidacji kierują PowerShell do testowania wartości parametrów, które userssubmit podczas wywoływania funkcji advanced. Jeśli wartości parametru się nie sprawdzą, zostanie wygenerowany błąd i funkcja nie zostanie wywołana. Walidacja parametru jest stosowana tylko do dostarczonych danych wejściowych, a wszelkie inne wartości, takie jak wartości domyślne, nie są walidowane.

Możesz również użyć atrybutów walidacji, aby ograniczyć wartości, które użytkownicy mogą określić dla zmiennych., Gdy używasz konwertera typów wraz z atrybutem avalidation, konwerter typów musi być zdefiniowany przed atrybutem.

 $number = 7

atrybut walidacji AllowNull

atrybut allownull pozwala na wartość obowiązkowego parametru$null. Poniższy przykład deklaruje parametr ComputerInfo, który może mieć wartość null.

Param( $ComputerInfo)

Uwaga

atrybut AllowNull nie działa, jeśli konwerter typów jest ustawiony tostring, ponieważ typ string nie akceptuje wartości null., Możesz użyć atrybutu allowemptystring dla tego scenariusza.

atrybut walidacji AllowEmptyString

atrybut AllowEmptyString pozwala wartości parametru obowiązkowego na pusty łańcuch (""). Poniższy przykład deklaruje parametr ComputerNameparameter, który może mieć pustą wartość łańcuchową.

Param( $ComputerName)

atrybut walidacji AllowEmptyCollection

atrybut allowemptycollection pozwala wartościom mandatoryparameter być pustą kolekcją@()., Poniższy przykład deklaruje parametr Nazwa komputera, który może mieć pustą wartość kolekcji.

Param( ] $ComputerName)

atrybut walidacji ValidateCount

atrybut validatecount określa minimalną i maksymalną liczbę wartości parametru akceptowanych. PowerShell generuje błąd, jeśli liczba wartości parametrów w poleceniu wywołującym funkcję jest poza zakresem.

poniższa deklaracja parametru tworzy parametr ComputerName, który przyjmuje od jednej do pięciu wartości parametru.,

Param( ] $ComputerName)

atrybut walidacji ValidateLength

atrybut walidacji validatelength określa minimalną i maksymalną liczbę cech w parametrze lub wartości zmiennej. PowerShell generuje błąd, jeśli długość wartości określonej dla parametru lub zmiennej jest poza zmianą.

w poniższym przykładzie nazwa każdego komputera musi mieć od jednego do dziesięciu znaków.

Param( ] $ComputerName)

w poniższym przykładzie wartość zmiennej $number musi mieć minimalną długość jednego znaku i maksymalnie dziesięć znaków.,

$number = '01'

Uwaga

w tym przykładzie wartość01 jest owinięta pojedynczymi cudzysłowami. Atrybut TheValidateLength nie akceptuje liczby bez zawijania zapytań.

atrybut walidacji ValidatePattern

atrybut walidacji validatepattern określa Wyrażenie regularne, które jest porównywane do wartości parametru lub zmiennej. PowerShell generuje błąd, jeśli wartość nie pasuje do wzorca wyrażenia regularnego.,

w poniższym przykładzie wartość parametru musi zawierać czterocyfrową liczbę, a każda cyfra musi być liczbą od zera do dziewięciu.

Param( ")] ] $ComputerName)

w poniższym przykładzie wartość zmiennej$number musi być dokładnie czterocyfrową liczbą, a każda cyfra musi być liczbą od zera do dziewięciu.

$")]$number = 1111

atrybut walidacji ValidateRange

atrybut walidacji validaterange określa zakres liczbowy lub aValidateRangeKind wartość enum dla każdego parametru lub wartości zmiennej.PowerShell generuje błąd, jeśli jakakolwiek wartość znajduje się poza tym zakresem.,

validaterangekind enum pozwala na następujące wartości:

  • Positive – liczba większa od zera.
  • Negative-liczba mniejsza od zera.
  • NonPositive-liczba mniejsza lub równa zeru.
  • Nonnegatywna-liczba większa lub równa zeru.

w poniższym przykładzie wartość parametru probes musi być pomiędzy zero i dziesięć.

Param( $Attempts)

w poniższym przykładzie wartość zmiennej $number musi znajdować się pomiędzy 10 a 10.,

$number = 5

w poniższym przykładzie wartość zmiennej$number musi być większa niż zero.

$number = 1

atrybut walidacji ValidateScript

atrybut walidacji validatescript określa skrypt, który jest używany do walidacji wartości aparametru lub zmiennej. PowerShell przekazuje wartość do skryptu i generuje błąd, jeśli skrypt zwróci $false lub jeśli skrypt wyrzuci wyjątek.,

gdy używasz atrybutu ValidateScript, wartość, która jest weryfikowana jest mapowana do zmiennej $_. Możesz użyć zmiennej $_, aby odnieść się do wartości w skrypcie.

w poniższym przykładzie wartość parametru EventDate musi być większa lub równa bieżącej dacie.

Param( $EventDate)

w poniższym przykładzie wartość zmiennej $date musi być większa lub równa bieżącej dacie i godzinie.,

$date = (Get-Date)

Uwaga

Jeśli używasz ValidateScript, nie możesz przekazać wartości$null do parametru. Po przekazaniu wartości null ValidateScript nie może zweryfikować dokumentu.

atrybut ValidateSet

atrybut validateset określa zestaw ważnych wartości dla zmiennej parametru i umożliwia uzupełnianie tabulatorów. PowerShell generuje błąd, jeśli wartość aparametru lub zmiennej nie pasuje do wartości w zestawie. Na poniższym przykładzie wartość parametru Detail może być tylko Niska, Średnia lub wysoka.,

Param( ] $Detail)

w poniższym przykładzie wartość zmiennej $flavor musi być zarówno czekoladowa, truskawkowa, jak i waniliowa.

$flavor = "Strawberry"

Walidacja odbywa się zawsze, gdy dana zmienna jest przypisana nawet w skrypcie. Na przykład, następujące wyniki powodują błąd w trybie runtime:

Param( $Message)$Message = "bye"

dynamiczne wartości validatesetat

Możesz użyć klasy do dynamicznego generowania wartości dla środowiska runtime validatesetat., W poniższym przykładzie prawidłowe wartości zmiennej$Sound są generowane przez klasę o nazwie SoundNames, która sprawdza trzy ścieżki systemowe plików dźwiękowych:

Klasa jest następnie implementowana jako dynamiczna wartość Validateseteas:

Param( )] $Sound)

atrybut walidacji validatenotnull

atrybut walidacji validatenotnull określa, że wartość parametru nie może być$null. PowerShell generuje błąd, jeśli wartość parametru wynosi $null.,

atrybut ValidateNotNull jest przeznaczony do użycia, gdy parametr jest opcjonalny, a typ jest niezdefiniowany lub ma konwerter typów, który może w domyśle przekonwertować wartość null, taką jak obiekt. Jeśli określisz typ, który domyślnie przekonwertuje wartość null, taką jak łańcuch znaków, wartość null zostanie przekonwertowana na pusty łańcuch, nawet jeśli użyjesz ValidateNotNullattribute. Dla tego scenariusza użyj ValidateNotNullOrEmpty

w poniższym przykładzie wartość parametru ID nie może być $null.,

Param( $ID)

atrybut walidacji ValidateNotNullOrEmpty

atrybut walidacji validatenotnullorempty określa, że wartość parametru nie może być$nullI nie może być pustym łańcuchem (""). PowerShell generuje błąd, jeśli parametr jest używany w wywołaniu funkcji, ale jego wartością jest $null, anempty string ("") lub pusta tablica @().,

Param( ] $UserName)

atrybut validatedrive validation

atrybut ValidateDrive określa, że wartość parametru musi reprezentować ścieżkę, która odnosi się tylko do dozwolonych napędów. PowerShell generuje błąd, jeśli wartość parametru odnosi się do napędów innych niż theallowed. Istnienie ścieżki, z wyjątkiem samego napędu, nie jest zweryfikowane.

Jeśli używasz ścieżki względnej, bieżący dysk musi znajdować się na liście dozwolonych dysków.,

Param( $Path)

atrybut walidacji ValidateUserDrive

atrybut walidacji validateuserdrive określa, że wartość parametru musi reprezentować ścieżkę, która odnosi się doUser napędu. PowerShell generuje błąd, jeśli ścieżka odnosi się do innego dysku. Atrybut walidacji sprawdza tylko istnienie części napędu ścieżki.

Jeśli używasz ścieżki względnej, bieżącym napędem musi być User.,

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.

Możesz zdefiniowaćUser dysk w konfiguracjach konfiguracji administracyjnych (JEA). W tym przykładzie tworzymy User: drive.

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

atrybut validatetrusteddata validation

ten atrybut został dodany w PowerShell 6.1.1.

obecnie atrybut jest używany wewnętrznie przez sam PowerShell i nie jest przeznaczony do użytku zewnętrznego.,

parametry dynamiczne

parametry dynamiczne są parametrami cmdletu, funkcji lub skryptu, które są dostępne tylko pod pewnymi warunkami.

na przykład kilka cmdletów dostawcy ma parametry, które są dostępne tylko wtedy, gdy cmdlet jest używany w napędzie dostawcy lub w określonej ścieżce napędu provider. Na przykład, parametr Kodowania jest dostępny naAdd-Content,Get-Content ISet-Content cmdletach tylko wtedy, gdy jest używany na dysku systemu plików ina.,

można również utworzyć parametr, który pojawia się tylko wtedy, gdy inny parametr jest używany w poleceniu funkcji lub gdy inny parametr ma określoną wartość.

parametry dynamiczne mogą być przydatne, ale używać ich tylko wtedy, gdy jest to konieczne, ponieważ mogą być trudne do wykrycia przez użytkowników. Aby znaleźć parametr dynamiczny, użytkownik musi znajdować się w ścieżce dostawcy, użyć parametru ArgumentListGet-Command cmdlet lub użyć parametru Path Get-Help.

aby utworzyć dynamiczny parametr dla funkcji lub skryptu, użyj słowa kluczowego DynamicParam.,

składnia jest następująca:

DynamicParam {<statement-list>}

na liście poleceń użyj poleceniaIf aby określić warunki, pod którymi parametr jest dostępny w funkcji.

użyjNew-Object do utworzenia systemu.Zarządzanie.Automatyka.RuntimeDefinedParameter obiekt do reprezentowania parametru i określenia jego nazwy.

możesz użyć poleceniaNew-Object do utworzenia systemu.Zarządzanie.Automatyka.,ParameterAttribute object to representattributes of the parameter, such as obligatory, Position, orValueFromPipeline or its parameter set.

poniższy przykład pokazuje przykładową funkcję ze standardowymi parametrami nazwanazwa i ścieżka oraz opcjonalnym parametrem dynamicznym o nazwie DP1. Parametr TheDP1 znajduje się w zestawie parametrów PSet1 I mA typ Int32.,Parametr DP1 jest dostępny w funkcjiGet-Sampletylko wtedy, gdy wartość parametru ścieżki rozpoczyna się od HKLM:, wskazując, że jest on używany w Dysku rejestru HKEY_LOCAL_MACHINE.

aby uzyskać więcej informacji, zobaczruntimedefinedparameter.

parametry przełącznika

parametry przełącznika są parametrami bez wartości parametru. Są skuteczne, gdy są używane i mają tylko jeden efekt.

na przykład parametr noprofile programu powershell.exe to switchparameter.,

aby utworzyć parametr przełącznika w funkcji, Określ w definicji parametrSwitch.

na przykład:

Param(<ParameterName>)

lub możesz użyć innej metody:

Param( $<ParameterName>)

parametry przełączania są łatwe w użyciu i są preferowane niż parametry logiczne, które mają trudniejszą składnię.

na przykład, aby użyć parametru switch, użytkownik wpisuje parametr w poleceniu.

-IncludeAll

aby użyć parametru logicznego, użytkownik wpisuje parametr i wartość logiczną.,

-IncludeAll:$true

podczas tworzenia parametrów przełącznika należy starannie wybrać nazwę parametru. Być pewne, że nazwa parametru komunikuje efekt parametru użytkownikowi.Unikaj wieloznacznych terminów, takich jak filtr lub maksimum, które mogą sugerować, że wymagana jest wartość avalue.

ArgumentCompleter atrybut

ArgumentCompleter atrybut umożliwia dodanie wartości dopełnienia tabulatora do określonego parametru. Atrybut ArgumentCompleter musi być zdefiniowany dla każdego parametru, który wymaga dopełnienia tabulatora., Podobnie jak DynamicParameters, dostępne wartości są obliczane w czasie wykonywania, gdy użytkownik naciśnie Tabafter nazwy parametru.

aby dodać atrybut ArgumentCompleter, musisz zdefiniować blok skryptu, który określa wartości. Blok skryptów musi przyjmować następująceparametry w kolejności określonej poniżej. Nazwy parametrów nie mają znaczenia, ponieważ wartości są podawane pozycyjnie.,

składnia jest następująca:

ArgumentCompleter script block

parametry bloku skryptu są ustawione na następujące wartości:

  • $commandName (Position 0) – parametr ten jest ustawiony na nazwę polecenia, dla którego blok skryptu ma uzupełniać zakładki.
  • $parameterName (Pozycja 1) – parametr ten jest ustawiony na parametr, który wymaga dopełnienia zakładki.
  • $wordToComplete(pozycja 2) – parametr ten jest ustawiony na wartość, którą użytkownik podał przed naciśnięciem Tab., Twój blok skryptów powinien użyć tej wartości, aby określić wartości zakończenia kart.
  • $commandAst(Pozycja 3) – parametr ten jest ustawiony na Abstract SyntaxTree (AST) dla bieżącej linii wejściowej. Aby uzyskać więcej informacji, zobacz klasę.
  • $fakeBoundParameters (Pozycja 4) – parametr ten jest ustawiony na hashtablecontaining$PSBoundParameters dla cmdleta, zanim użytkownik nacisnietab. Aby uzyskać więcej informacji, zobaczabout_automatic_variables.,

ArgumentCompleter script block musi rozwinąć wartości za pomocą linii, na przykład ForEach-Object, Where-Object lub innej odpowiedniej metody.Zwracanie tablicy wartości powoduje, że PowerShell traktuje całą tablicę jako jedną wartość dopełnienia karty.

poniższy przykład dodaje dopełnienie tabulacji do parametru Value. Jeśli podano tylko parametr Value, wyświetlane są wszystkie możliwe wartości lub argumenty forValue. Gdy parametr Type jest określony, parametr value wyświetla tylko możliwe wartości dla tego typu.,

ponadto operator-like zapewnia, że jeśli użytkownik wpisze następującą komendę i użyje uzupełniania kart, zwracane jest tylko Apple.

Test-ArgumentCompleter -Type Fruits -Value A

Zobacz także

o_automatic_variables

o_functions

o_functions_advanced

o_functions_advanced_methods

about_functions_cmdletbindingattribute

about_functions_outputtypeattribute