- 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ść argumentuPositionalBinding
atrybutu CmdletBinding na$False
., ArgumentPosition
ma pierwszeństwo przed wartością argumentuPositionalBinding
atrybutu CmdletBinding. Aby uzyskać więcej informacji, zobacz PositionalBinding
w 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ówComputer
I 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ć$null
I 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-Sample
tylko 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
Dodaj komentarz