Udostępnij za pośrednictwem


Obsługiwanie symboli wieloznacznych w parametrach poleceń cmdlet

Często należy zaprojektować polecenie cmdlet w celu uruchomienia względem grupy zasobów, a nie pojedynczego zasobu. Na przykład polecenie cmdlet może wymagać zlokalizowania wszystkich plików w magazynie danych o tej samej nazwie lub rozszerzeniu. Należy zapewnić obsługę symboli wieloznacznych podczas projektowania polecenia cmdlet, które będzie uruchamiane względem grupy zasobów.

Uwaga

Używanie symboli wieloznacznych jest czasami nazywane symbolami wieloznacznymi.

Polecenia cmdlet programu Windows PowerShell korzystające z symboli wieloznacznych

Wiele poleceń cmdlet programu Windows PowerShell obsługuje symbole wieloznaczne dla ich wartości parametrów. Na przykład prawie każde polecenie cmdlet z parametrem Name lub Path obsługuje symbole wieloznaczne dla tych parametrów. (Mimo że większość poleceń cmdlet z parametrem Path ma również parametr LiteralPath, który nie obsługuje symboli wieloznacznych). Poniższe polecenie pokazuje, jak symbol wieloznaczny jest używany do zwracania wszystkich poleceń cmdlet w bieżącej sesji, której nazwa zawiera zlecenie Get.

Get-Command get-*

Obsługiwane symbole wieloznaczne

Program Windows PowerShell obsługuje następujące symbole wieloznaczne.

Symbol wieloznaczny Opis Przykład Mecze Nie pasuje
* Dopasuje zero lub więcej znaków, zaczynając od określonej pozycji a* A, ag, Apple
? Pasuje do dowolnego znaku w określonej pozycji ?n An, in, on Prowadził
[ ] Pasuje do zakresu znaków [a-l]ook książka, kucharz, wygląd nook, wziął
[ ] Pasuje do określonych znaków [bn]ook książka, nook kucharz, spójrz

Podczas projektowania poleceń cmdlet obsługujących symbole wieloznaczne zezwalaj na kombinacje symboli wieloznacznych. Na przykład następujące polecenie używa polecenia cmdlet Get-ChildItem, aby pobrać wszystkie pliki .txt, które znajdują się w folderze C:\Techdocs i zaczynają się od liter "a" za pośrednictwem "l".

Get-ChildItem C:\techdocs\[a-l]\*.txt

Poprzednie polecenie używa wieloznacznych symboli wieloznacznych zakresu [a-l], aby określić, że nazwa pliku powinna zaczynać się od znaków "a" przez "l" i używa symbolu wieloznakowego * jako symbol zastępczy dla wszystkich znaków między pierwszą literą nazwy pliku a rozszerzeniem .txt.

W poniższym przykładzie użyto wzorca z symbolami wieloznacznymi zakresu, który wyklucza literę "d", ale zawiera wszystkie pozostałe litery od "a" do "f".

Get-ChildItem C:\techdocs\[a-cef]\*.txt

Obsługa znaków literału w wzorcach wieloznacznych

Jeśli określony wzorzec wieloznaczny zawiera znaki literału, które nie powinny być interpretowane jako znaki wieloznaczne, użyj znaku backtick (`) jako znaku ucieczki. Po określeniu znaków literału int interfejsu API programu PowerShell użyj pojedynczego backtick. Po określeniu znaków literału w wierszu polecenia programu PowerShell użyj dwóch backticksów.

Na przykład poniższy wzorzec zawiera dwa nawiasy, które należy wziąć dosłownie.

W przypadku użycia w interfejsie API programu PowerShell:

  • "John Smith '[*']"

W przypadku użycia z wiersza polecenia programu PowerShell:

  • "John Smith ''[*']"

Ten wzorzec pasuje do "John Smith [Marketing]" lub "John Smith [Development]". Na przykład:

PS> "John Smith [Marketing]" -like "John Smith ``[*``]"
True

PS> "John Smith [Development]" -like "John Smith ``[*``]"
True

Dane wyjściowe polecenia cmdlet i symbole wieloznaczne

Gdy parametry polecenia cmdlet obsługują symbole wieloznaczne, operacja zwykle generuje dane wyjściowe tablicy. Czasami nie ma sensu obsługiwać danych wyjściowych tablicy, ponieważ użytkownik może używać tylko jednego elementu. Na przykład polecenie cmdlet Set-Location nie obsługuje danych wyjściowych tablicy, ponieważ użytkownik ustawia tylko jedną lokalizację. W tym przypadku polecenie cmdlet nadal obsługuje symbole wieloznaczne, ale wymusza rozpoznawanie pojedynczej lokalizacji.

Zobacz też

pisanie polecenia cmdlet programu Windows PowerShell

klasy WildcardPattern