Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Krátký popis
Popisuje, jak používat zástupné znaky v PowerShellu.
Dlouhý popis
Zástupné znaky představují jeden nebo více znaků. Můžete je použít k vytváření vzorů slov v příkazech. Výrazy se zástupným znakem se používají s operátorem -like nebo s libovolným parametrem, který přijímá zástupné cardy.
Pokud chcete například shodovat všechny soubory v C:\Techdocs adresáři s příponou .ppt názvu souboru, zadejte:
Get-ChildItem C:\Techdocs\*.ppt
V tomto případě zástupný znak hvězdička (*) představuje všechny znaky, které se zobrazí před příponou .ppt názvu souboru.
Výrazy se zástupnými znaky jsou jednodušší než regulární výrazy. Další informace najdete v tématu about_Regular_Expressions.
PowerShell podporuje následující zástupné znaky:
-
*- Shoda s nulovými nebo více znaky-
a*shodyaA,agaApple -
a*neodpovídábanana
-
-
?- U řetězců odpovídá jednomu znaku v dané pozici.-
?nshodyan,inaon -
?nneodpovídáran
-
-
?- U souborů a adresářů odpovídá nule nebo jednomu znaku v dané pozici.-
?.txtshodya.txtab.txt -
?.txtneodpovídáab.txt
-
-
[ ]- Shoda s rozsahem znaků-
[a-l]ookshodybook,cookalook -
[a-l]ookneodpovídátook
-
-
[ ]- Shoda s konkrétními znaky-
[bc]ookshodybookacook -
[bc]ookneodpovídáhook
-
-
`*– Porovná libovolný znak jako literál (nikoli zástupný znak)-
12`*4zápasy12*4 -
12`*4neodpovídá1234
-
Do stejného vzoru slova můžete zahrnout více zástupných znaků. Pokud chcete například najít textové soubory s názvy, které začínají písmeny a ažl, zadejte:
Get-ChildItem C:\Techdocs\[a-l]*.txt
Můžou existovat případy, kdy chcete, aby se literálový znak shodovaly místo toho, aby byl považován za zástupný znak. V takových případech můžete pomocí znaku zpětného znaku (`) utéct zástupný znak, aby byl porovnán pomocí hodnoty literálového znaku.
'*hello`?*' Například odpovídá řetězcům obsahujícím text "hello?".
Mnoho rutin přijímá zástupné znaky v hodnotách parametrů. Téma nápovědy pro každou rutinu popisuje, které parametry přijímají zástupné znaky. U parametrů, které přijímají zástupné znaky, jejich použití nerozlišuje malá a velká písmena.
Zástupné znaky můžete použít v příkazech a blocích skriptu, například vytvořit vzor slova, který představuje hodnoty vlastností. Například následující příkaz získá služby, ve kterých hodnota vlastnosti ServiceType zahrnuje Interactive.
Get-Service | Where-Object {$_.ServiceType -like "*Interactive*"}
V následujícím příkladu if příkaz obsahuje podmínku, která k vyhledání hodnot vlastností používá zástupné znaky. Pokud popis bodu obnovení obsahuje PowerShell, příkaz přidá hodnotu vlastnosti CreationTime bodu obnovení do souboru protokolu.
$p = Get-ComputerRestorePoint
foreach ($point in $p) {
if ($point.Description -like "*PowerShell*") {
Add-Content -Path C:\TechDocs\RestoreLog.txt "$($point.CreationTime)"
}
}
Zapouzdření zástupných znaků v názvech souborů a adresářů
Poznámka:
Porovnávání se zástupnými znaky pro položky systému souborů funguje jinak než u řetězců. Další informace naleznete v Poznámky Oddíl DirectoryInfo.GetFiles(String, EnumerationOptions) metoda.
Při pokusu o přístup k souboru nebo adresáři, který obsahuje zástupné znaky název, je nutné utéct zástupné znaky. Zvažte následující soubory:
PS> Get-ChildItem
Directory: D:\temp\test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 11/3/2025 3:39 PM 41 file[1].txt
-a--- 11/3/2025 3:39 PM 41 file[2].txt
-a--- 11/3/2025 3:39 PM 41 file[3].txt
Znaky hranatých závorek ([]) jsou zástupné znaky, takže při pokusu o získání souboru pomocí některé z rutin Item, jako Get-Itemje například .
PS> Get-Item file`[1`].txt
Tento příklad však selhal, protože hodnota názvu souboru je vázána na parametr Path , který podporuje zástupné znaky. V tomto případě se `[ vzor přeloží na prostý [, který parametr Path interpretuje jako zástupný znak. Existují tři způsoby, jak tento problém vyřešit:
Uchytáte znaky zpětného zápisu.
PS> Get-Item -Path file``[1``].txt Directory: D:\temp\test Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 11/3/2025 3:39 PM 41 file[1].txtPřed vazbou na parametr Path vložte název souboru do jednoduchých uvozovek, aby se backticks nezvětšovaly.
PS> Get-Item -Path 'file`[1`].txt' Directory: D:\temp\test Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 11/3/2025 3:39 PM 41 file[1].txtPoužití parametru LiteralPath
PS> Get-Item -LiteralPath file[1].txt Directory: D:\temp\test Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 11/3/2025 3:39 PM 41 file[1].txt