Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Deskripsi singkat
PowerShell tidak peka huruf besar/kecil saat mempertahankan kasus.
Deskripsi panjang
Sebagai prinsip umum, PowerShell tidak peka huruf besar/kecil sedapat mungkin sambil mempertahankan kasus dan tidak merusak OS yang mendasarinya.
Sistem berbasis Windows tidak peka huruf besar/kecil untuk sebagian besar operasi. Namun, sistem non-Windows peka huruf besar/kecil untuk sebagian besar operasi, terutama untuk sistem file dan akses variabel lingkungan.
PowerShell dijamin tidak peka huruf besar/kecil pada semua sistem untuk area berikut:
- Nama variabel
- Nama operator
- Akses anggota non-kamus
- Penemuan perintah dan alias PowerShell. Ini mengecualikan perintah ExternalScript dan Aplikasi.
- Nama parameter dan alias
- Kata kunci bahasa PowerShell
- pernyataan
using namespace - Ketik harfiah
- pernyataan
#Requires - Kata kunci bantuan berbasis komentar
- Nama PSProvider
- Nama PSDrive
- Pengubah cakupan
Kasus khusus
Nama modul tidak peka huruf besar/kecil (dengan pengecualian)
Nama modul adalah murni konsep PowerShell dan dianggap tidak sensitif terhadap huruf besar/kecil. Namun, ada pemetaan yang kuat ke nama folder, yang dapat sensitif huruf besar/kecil dalam sistem operasi yang digunakan. Mengimpor dua modul dengan nama yang tidak peka huruf besar/kecil yang sama memiliki perilaku yang sama dengan mengimpor dua modul dengan nama yang sama dari jalur yang berbeda.
Nama modul disimpan dalam status sesi menggunakan kasus tempat modul diimpor. Nama, seperti yang disimpan dalam status sesi, digunakan oleh
Update-Helpsaat mencari file bantuan baru. Layanan web yang melayani file bantuan untuk Microsoft menggunakan sistem file peka huruf besar/kecil. Ketika kasus nama modul yang diimpor tidak cocok,Update-Helptidak dapat menemukan file bantuan dan melaporkan kesalahan.-
Penyedia
FileSystemdanEnvironmentpeka huruf besar/kecil pada sistem non-Windows. Umumnya, operasi yang melibatkan jalur atau variabel lingkungan peka huruf besar/kecil pada sistem tersebut.Namun, pencocokan kartubebas oleh cmdlet penyedia tidak peka huruf besar/kecil, terlepas dari sistem.
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 Nama set parameter peka huruf besar/kecil.
Kasus
DefaultParameterSetNameini harus identik denganParameterSetName.Metode .NET sering menunjukkan perilaku peka huruf besar/kecil secara default.
Contohnya meliputi:
- Metode .NET yang setara (tanpa keikutsertaan eksplisit) untuk operator PowerShell umum seperti:
-
Array.Contains()String.Contains()String.Replace()Regex.Match()Regex.Replace()
-
- Refleksi; nama anggota harus menggunakan huruf besar/kecil yang benar.
- Instansiasi kamus non-harfiah. Misalnya:
-
[hashtable]::new()memiliki kunci peka huruf besar/kecil, sedangkan literal@{}yang dapat di-hash memiliki kunci yang tidak peka huruf besar/kecil. -
[ordered]::new()memiliki kunci peka huruf besar/kecil, sedangkan memiliki kunci yang[ordered] @{}tidak peka huruf besar/kecil. Akselerator[ordered]jenis tidak tersedia di PowerShell v5.1 dan yang lebih lama.
-
- Panggilan
Enum.Parse()eksplisit peka huruf besar/kecil secara default, sedangkan PowerShell biasanya menangani enum dengan cara yang tidak peka huruf besar/kecil.
- Metode .NET yang setara (tanpa keikutsertaan eksplisit) untuk operator PowerShell umum seperti:
-UniqueCmdlet:-
Select-Object -UniquedanGet-Uniquepeka huruf besar/kecil secara default. Sakelar-CaseInsensitiveditambahkan di PS v7.4. -
Sort-Object -Uniquetidak peka huruf besar/kecil secara default, tetapi selalu memiliki-CaseSensitivesakelar.
-
Compare-Objecttidak peka huruf besar/kecil secara default, tetapi memiliki-CaseSensitivesakelar. Perbandingan jenis[char]peka huruf besar/kecil secara default. Perbandingan string tidak peka huruf besar/kecil secara default.# 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:-
-AsHashtableditambahkan di PS v6. Dalam PS v7.3, perubahan dilakukan untuk memperlakukan kunci JSON sebagai peka huruf besar/kecil ketika parameter ini ditentukan.- Dengan parameter , objek jenis
Management.Automation.OrderedHashtabledipancarkan, yang memiliki kunci peka huruf besar/kecil. - Tanpa parameter , kunci JSON diperlakukan sebagai tidak peka huruf besar/kecil. Output adalah objek kustom; kunci peka huruf besar/kecil terakhir menang.
- Dengan parameter , objek jenis
- https://github.com/PowerShell/PowerShell/issues/19928
-
-
Tidak peka huruf besar/kecil secara default, tetapi memiliki
-CaseSensitivesakelar.Di Windows PowerShell v5.1,
-CaseSensitivedan-AsHashtablemenghasilkan hashtable yang tidak peka huruf besar/kecil. Kunci duplikat mengakibatkan kesalahan.[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.GroupObjectCommandDi PowerShell v7 dan yang lebih tinggi,
-CaseSensitivedan-AsHashtablemenghasilkan hashtable peka huruf besar/kecil. Tidak ada kesalahan yang terjadi dengan kunci duplikat.[pscustomobject] @{ Foo = 'Bar' }, [pscustomobject] @{ Foo = 'bar' } | Group-Object -Property Foo -CaseSensitive -AsHashtableName Value ---- ----- Bar {@{Foo=Bar}} bar {@{Foo=bar}}
-
- Tidak peka huruf besar/kecil secara default, tetapi memiliki
-CaseSensitivesakelar.
- Tidak peka huruf besar/kecil secara default, tetapi memiliki
Get-Commanddan penemuan/pemanggilan perintah:- Pada sistem file peka huruf besar/kecil, penemuan dan pemanggilan
ExternalScriptdanApplicationperintah peka huruf besar/kecil. -
Get-Commandpencocokan kartubebas dengan jenis ini juga peka huruf besar/kecil. - Semua lainnya
CommandTypestidak peka huruf besar/kecil.
- Pada sistem file peka huruf besar/kecil, penemuan dan pemanggilan
-
Secara default, operator tidak peka huruf besar/kecil.
-c*operator peka huruf besar/kecil.-i*operator tidak peka huruf besar/kecil.-replace/-ireplacetidak peka huruf besar/kecil secara default, kecuali dengan grup pengambilan bernama, yang peka huruf besar/kecil.'Bar' -replace '(?<a>a)', '${a}${a}' # Baar 'Bar' -replace '(?<a>a)', '${A}${A}' # B${A}${A}r
-
-splitdan-isplittidak peka huruf besar/kecil.-csplitpeka huruf besar/kecil, kecualiIgnoreCaseopsi ditentukan.'Bar' -csplit 'A', 0 # Bar 'Bar' -csplit 'A', 0, 'IgnoreCase' # B # r
-
- Pada sistem file peka huruf besar/kecil, penyelesaian tab dan globbing keduanya tidak peka huruf besar/kecil. Misalnya,
TabExpansion2 -inputScript ./fooakan selesai./Foo.txtdi Linux.
- Pada sistem file peka huruf besar/kecil, penyelesaian tab dan globbing keduanya tidak peka huruf besar/kecil. Misalnya,
usingPernyataan:- Pada sistem file peka huruf besar/kecil,
using moduledanusing assemblypeka huruf besar/kecil saat jalur ditentukan. -
using modulehanya dengan nama modul tidak peka huruf besar/kecil. -
using namespaceselalu tidak peka huruf besar/kecil.
- Pada sistem file peka huruf besar/kecil,
-
- Urutan escape seperti
`npeka huruf besar/kecil.
- Urutan escape seperti