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
PowerShell při zachování velkých a malých písmen nerozlišuje velká a malá písmena.
Dlouhý popis
Obecně platí, že PowerShell nerozlišuje velká a malá písmena bez ohledu na to, kde je to možné, a nerozlišuje základní operační systém.
U většiny operací nerozlišují velká a malá písmena systémů Windows. U většiny operací se ale rozlišují malá a velká písmena, zejména pro přístup k systému souborů a proměnným prostředí.
U všech systémů je zaručeno, že PowerShell nerozlišuje velká a malá písmena pro následující oblasti:
- Názvy proměnných
- Názvy operátorů
- Přístup bez slovníku
- Zjišťování příkazů a aliasů PowerShellu Tím se vyloučí příkazy ExternalScript a Application.
- Názvy a aliasy parametrů
- Klíčová slova jazyka PowerShellu
- příkazy
using namespace - Psaní literálů
- příkazy
#Requires - Klíčová slova nápovědy založené na komentářích
- Názvy PSProvider
- Názvy PSDrivu
- Modifikátory oboru
Zvláštní případy
Názvy modulů nerozlišují malá a velká písmena (s výjimkami).
Název modulu je čistě koncept PowerShellu a nerozlišuje velká a malá písmena. Existuje však silné mapování na název složky, což může být citlivé na velká a malá písmena v základním operačním systému. Importování dvou modulů se stejným názvem bez rozlišování velkých a malých písmen má stejné chování jako import dvou modulů se stejným názvem z různých cest.
Název modulu je uložen ve stavu relace pomocí případu, podle kterého byl importován. Název uložený ve stavu relace se používá
Update-Helppři hledání nových souborů nápovědy. Webová služba, která obsluhuje soubory nápovědy pro Microsoft, používá systém souborů s rozlišováním velkých a malých písmen. Pokud se případ importovaného názvu modulu neshoduje,Update-Helpnemůžete najít soubory nápovědy a hlásí chybu.-
EnvironmentUFileSystemjiných systémů než Windows rozlišují velká a malá písmena. Obecně platí, že operace zahrnující cesty nebo proměnné prostředí v takových systémech rozlišují malá a velká písmena.Porovnávání zástupných znaků podle rutin zprostředkovatele ale nerozlišuje malá a velká písmena bez ohledu na systém.
PS /home/user01> New-Item -Path Temp:foo.txt -Force Directory: /tmp UnixMode User Group LastWriteTime Size Name -------- ---- ----- ------------- ---- ---- -rw-r--r-- user01 user01 1/6/2026 10:53 0 foo.txt PS /home/user01> (Get-Item -Path Temp:FOO.txt).Name Get-Item: Cannot find path 'Temp:/FOO.txt' because it does not exist. PS /home/user01> (Get-Item -Path Temp:F[O]*.txt).Name foo.txt PS /home/user01> (Get-Item -Path Env:hOM[E]).Name HOME V názvech sad parametrů se rozlišují malá a velká písmena.
Případ
DefaultParameterSetNamemusí být shodný sParameterSetName.Metody .NET ve výchozím nastavení často vykazují chování citlivé na malá a velká písmena.
Mezi příklady patří:
- Ekvivalentní metody .NET (bez výslovného souhlasu) pro běžné operátory PowerShellu, jako jsou:
-
Array.Contains(),String.Contains(),String.Replace(), ,Regex.Match()Regex.Replace()
-
- Odraz; názvy členů musí používat správné písmeno.
- Neslovná instance slovníku. Například:
-
[hashtable]::new()obsahuje klíče citlivé na malá a velká písmena, zatímco literál@{}hashovací tabulky obsahuje klíče nerozlišující malá a velká písmena. -
[ordered]::new()obsahuje klíče citlivé na malá a velká písmena, zatímco[ordered] @{}klíče nerozlišují malá a velká písmena. Akcelerátor[ordered]typů není dostupný v PowerShellu verze 5.1 a starším.
-
- Explicitní volání
Enum.Parse()ve výchozím nastavení rozlišují malá a velká písmena, zatímco PowerShell obvykle zpracovává výčty nerozlišují malá a velká písmena.
- Ekvivalentní metody .NET (bez výslovného souhlasu) pro běžné operátory PowerShellu, jako jsou:
-UniqueRutin:-
Select-Object -UniqueaGet-Uniqueve výchozím nastavení rozlišují malá a velká písmena. Přepínač-CaseInsensitivebyl přidán v PS v7.4. -
Sort-Object -Uniqueve výchozím nastavení nerozlišuje malá a velká písmena, ale vždy měl-CaseSensitivepřepínač.
-
Compare-Objectve výchozím nastavení nerozlišuje malá a velká písmena, ale má-CaseSensitivepřepínač.[char]Porovnání typů ve výchozím nastavení rozlišují malá a velká písmena. Porovnání řetězců ve výchozím nastavení nerozlišuje malá a velká písmena.# Compare strings - Equal (no output) Compare-object -ReferenceObject a -DifferenceObject A # Compare chars - Different (output) Compare-object -ReferenceObject ([char] 'a') -DifferenceObject ([char] 'A')ConvertFrom-Json -AsHashtable:-
-AsHashtablebyla přidána v PS v6. V PS v7.3 došlo ke změně, která při zadání tohoto parametru považuje klíče JSON za citlivé na malá a velká písmena.- U parametru se vygeneruje objekt typu
Management.Automation.OrderedHashtable, který obsahuje klíče citlivé na malá a velká písmena. - Bez parametru se klíče JSON považují za nerozlišující malá a velká písmena. Výstup je vlastní objekt; poslední klíč nerozlišující velká a malá písmena vyhrává.
- U parametru se vygeneruje objekt typu
- https://github.com/PowerShell/PowerShell/issues/19928
-
-
Ve výchozím nastavení nerozlišují malá a velká písmena, ale má
-CaseSensitivepřepínač.Ve Windows PowerShellu v5.1
-CaseSensitivea-AsHashtablevytvoří hodnotu hashtable s rozlišováním malých a velkých písmen. Duplicitní klíče způsobí chybu.[pscustomobject] @{ Foo = 'Bar' }, [pscustomobject] @{ Foo = 'bar' } | Group-Object -Property Foo -CaseSensitive -AsHashtableGroup-Object : The objects grouped by this property cannot be expanded because there is a key duplication. Provide a valid value for the property, and then try again. At line:2 char:11 + Group-Object -Property Foo -CaseSensitive -AsHashtable + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [Group-Object], Exception + FullyQualifiedErrorId : The objects grouped by this property cannot be expanded because there is a key duplication. Provide a valid value for the property, and then try again.,Microsoft.PowerShell.Comman ds.GroupObjectCommandV PowerShellu v7 a vyšších
-CaseSensitiveverzích vytvoří-AsHashtablehashovatelnou tabulku s rozlišováním velkých a malých písmen. U duplicitních klíčů nedojde k žádné chybě.[pscustomobject] @{ Foo = 'Bar' }, [pscustomobject] @{ Foo = 'bar' } | Group-Object -Property Foo -CaseSensitive -AsHashtableName Value ---- ----- Bar {@{Foo=Bar}} bar {@{Foo=bar}}
-
- Ve výchozím nastavení nerozlišují malá a velká písmena, ale má
-CaseSensitivepřepínač.
- Ve výchozím nastavení nerozlišují malá a velká písmena, ale má
Get-Commanda zjišťování/vyvolání příkazů:- U systémů souborů s rozlišováním velkých a malých písmen se rozlišují zjišťování a vyvolání
ExternalScriptpříkazůApplicationa rozlišují se malá a velká písmena. -
Get-CommandPři porovnávání zástupných znaků s těmito typy se rozlišují velká a malá písmena. - Všechny ostatní nerozlišují malá a velká
CommandTypespísmena.
- U systémů souborů s rozlišováním velkých a malých písmen se rozlišují zjišťování a vyvolání
-
Ve výchozím nastavení nerozlišují operátory malá a velká písmena.
-c*operátory rozlišují malá a velká písmena.-i*operátory nerozlišují malá a velká písmena.-replace/-ireplaceve výchozím nastavení nerozlišuje malá a velká písmena, s výjimkoupojmenovaných skupin zachycení, u kterých se rozlišují malá a velká písmena.'Bar' -replace '(?<a>a)', '${a}${a}' # Baar 'Bar' -replace '(?<a>a)', '${A}${A}' # B${A}${A}r
-
-splitnerozlišují-isplitmalá a velká písmena.-csplitrozlišují se malá a velká písmena, pokud není zadánaIgnoreCasemožnost.'Bar' -csplit 'A', 0 # Bar 'Bar' -csplit 'A', 0, 'IgnoreCase' # B # r
-
- V systémech souborů s rozlišováním velkých a malých písmen jsou dokončování tabulátoru i globbing nerozlišující malá a velká písmena. Například
TabExpansion2 -inputScript ./foose dokončí v Linuxu./Foo.txt.
- V systémech souborů s rozlišováním velkých a malých písmen jsou dokončování tabulátoru i globbing nerozlišující malá a velká písmena. Například
usingProhlášení:- V systémech
using modulesouborů s rozlišováním malých a velkých písmen ausing assemblypři zadání cesty se rozlišují malá a velká písmena. -
using modulepouze název modulu nerozlišuje velká a malá písmena. -
using namespacenerozlišuje malá a velká písmena.
- V systémech
-
- U řídicích sekvencí se rozlišují malá a velká písmena
`n.
- U řídicích sekvencí se rozlišují malá a velká písmena