간단한 설명
PowerShell은 대/소문자를 가능한 한 구분하지 않으면서도 대/소문자를 유지합니다.
긴 설명
일반적으로 PowerShell은 대/소문자를 유지하면서 기본 OS를 중단하지 않으면서 가능한 경우 대/소문자를 구분하지 않습니다.
Windows 기반 시스템은 대부분의 작업에 대/소문자를 구분하지 않습니다. 그러나 Windows가 아닌 시스템은 대부분의 작업, 특히 파일 시스템 및 환경 변수 액세스의 경우 대/소문자를 구분합니다.
PowerShell은 다음 영역에 대한 모든 시스템에서 대/소문자를 구분하지 않습니다.
- 변수 이름
- 연산자 이름
- 사전이 아닌 멤버 액세스
- PowerShell 명령 및 별칭의 명령 검색 ExternalScript 및 애플리케이션 명령은 제외됩니다.
- 매개 변수 이름 및 별칭
- PowerShell 언어 키워드
-
using namespace문장 - 형식 리터럴
-
#Requires문장 - 주석 기반 도움말 키워드
- PSProvider 이름
- PSDrive 이름
- 범위 한정자
특수 사례
모듈 이름은 대/소문자를 구분하지 않습니다(예외 제외).
모듈의 이름은 순전히 PowerShell 개념이며 대소문자를 구별하지 않습니다. 그러나 기본 운영 체제에서 대/소문자를 구분할 수 있는 폴더 이름에 대한 강력한 매핑이 있습니다. 대/소문자를 구분하지 않는 이름이 같은 두 모듈을 가져오는 것은 서로 다른 경로에서 이름이 같은 두 모듈을 가져오는 것과 동일한 동작을 줍니다.
모듈의 이름은 가져온 경우를 사용하여 세션 상태에 저장됩니다. 세션 상태에 저장된 이름은 새 도움말 파일을 검색할 때 사용됩니다
Update-Help. Microsoft용 도움말 파일을 제공하는 웹 서비스는 대/소문자를 구분하는 파일 시스템을 사용합니다. 가져온 모듈 이름의 대소문자가 일치하지 않으면Update-Help이 도움말 파일을 찾을 수 없으며 오류를 보고합니다.-
및
Environment공급자는FileSystem비 Windows 시스템에서 대/소문자를 구분합니다. 일반적으로 경로 또는 환경 변수와 관련된 작업은 이러한 시스템에서 대/소문자를 구분합니다.그러나 공급자 cmdlet에 의한 와일드카드 일치는 시스템에 관계없이 대/소문자를 구분하지 않습니다.
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 매개 변수 집합 이름은 대/소문자를 구분합니다.
대/소문자는
DefaultParameterSetName같아야ParameterSetName합니다..NET 메서드는 대/소문자를 구분하는 동작을 기본적으로 보여 줍니다.
예를 들면 다음과 같습니다.
- 다음과 같은 일반적인 PowerShell 연산자를 위한 동등한 .NET 메서드(명시적 옵트인 제외)
-
Array.Contains(),String.Contains(),String.Replace(),Regex.Match()Regex.Replace()
-
- 반사; 멤버 이름은 올바른 대/소문자를 사용해야 합니다.
- 리터럴이 아닌 사전 인스턴스화입니다. 예를 들어:
-
[hashtable]::new()에는 대/소문자를 구분하는 키가 있는 반면 해시 테이블 리터럴@{}에는 대/소문자를 구분하지 않는 키가 있습니다. -
[ordered]::new()에는 대/소문자를 구분하지 않는 키가 있는 반면[ordered] @{}에 대/소문자를 구분하지 않는 키가 있습니다.[ordered]형식 가속기는 PowerShell v5.1 이하에서 사용할 수 없습니다.
-
- 명시적으로 호출
Enum.Parse()하는 것은 기본적으로 대/소문자를 구분하는 반면 PowerShell은 대/소문자를 구분하지 않는 방식으로 열거형을 처리합니다.
- 다음과 같은 일반적인 PowerShell 연산자를 위한 동등한 .NET 메서드(명시적 옵트인 제외)
-UniqueCmdlet:-
Select-Object -Unique기본적으로Get-Unique대/소문자를 구분합니다. 스위치가-CaseInsensitivePS v7.4에 추가되었습니다. -
Sort-Object -Unique는 기본적으로 대/소문자를 구분하지 않지만 항상 스위치를 사용했습니다-CaseSensitive.
-
Compare-Object는 기본적으로 대/소문자를 구분하지 않지만 스위치가 있습니다-CaseSensitive. 형식 비교[char]는 기본적으로 대/소문자를 구분합니다. 문자열 비교는 기본적으로 대/소문자를 구분하지 않습니다.# 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:-
-AsHashtablePS v6에 추가되었습니다. PS v7.3에서는 이 매개 변수를 지정할 때 JSON 키를 대/소문자를 구분하는 것으로 처리하도록 변경되었습니다.- 매개 변수를 사용하면 대/소문자를 구분하는 키가 있는 형식
Management.Automation.OrderedHashtable의 개체가 내보내집니다. - 매개 변수가 없으면 JSON 키가 대/소문자를 구분하지 않는 것으로 처리됩니다. 출력은 사용자 지정 개체입니다. 마지막 대/소문자를 구분하지 않는 키가 우선합니다.
- 매개 변수를 사용하면 대/소문자를 구분하는 키가 있는 형식
- https://github.com/PowerShell/PowerShell/issues/19928
-
-
기본적으로 대/소문자를 구분하지 않지만 스위치가 있습니다
-CaseSensitive.Windows PowerShell v5.1
-CaseSensitive-AsHashtable에서 대/소문자를 구분하지 않는 해시 테이블을 생성합니다. 키가 중복되면 오류가 발생합니다.[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.GroupObjectCommandPowerShell v7 이상
-CaseSensitive-AsHashtable에서 대/소문자를 구분하는 해시 테이블을 생성합니다. 중복 키로 오류가 발생하지 않습니다.[pscustomobject] @{ Foo = 'Bar' }, [pscustomobject] @{ Foo = 'bar' } | Group-Object -Property Foo -CaseSensitive -AsHashtableName Value ---- ----- Bar {@{Foo=Bar}} bar {@{Foo=bar}}
-
- 기본적으로 대/소문자를 구분하지 않지만 스위치가 있습니다
-CaseSensitive.
- 기본적으로 대/소문자를 구분하지 않지만 스위치가 있습니다
Get-Command및 명령 검색/호출:- 대/소문자를 구분하는 파일 시스템에서 검색 및 호출
ExternalScript및Application명령은 대/소문자를 구분합니다. -
Get-Command이러한 형식과 일치하는 와일드카드도 대/소문자를 구분합니다. - 다른
CommandTypes모든 것은 대/소문자를 구분하지 않습니다.
- 대/소문자를 구분하는 파일 시스템에서 검색 및 호출
-
기본적으로 연산자는 대/소문자를 구분하지 않습니다.
-c*연산자는 대/소문자를 구분합니다.-i*연산자는 대/소문자를 구분하지 않습니다.-replace/-ireplace는 대/소문자를 구분하는 명명된 캡처 그룹을제외하고 기본적으로 대/소문자를 구분하지 않습니다.'Bar' -replace '(?<a>a)', '${a}${a}' # Baar 'Bar' -replace '(?<a>a)', '${A}${A}' # B${A}${A}r
-
-split대-isplit/소문자를 구분하지 않습니다.-csplit는 옵션을 지정 하지 않는 한 대/소문자를IgnoreCase구분합니다.'Bar' -csplit 'A', 0 # Bar 'Bar' -csplit 'A', 0, 'IgnoreCase' # B # r
탭 완성:
- 대/소문자를 구분하는 파일 시스템에서 탭 완성 및 글로빙은 모두 대/소문자를 구분하지 않습니다. 예를 들어
TabExpansion2 -inputScript ./fooLinux에서 완료됩니다./Foo.txt.
- 대/소문자를 구분하는 파일 시스템에서 탭 완성 및 글로빙은 모두 대/소문자를 구분하지 않습니다. 예를 들어
using문을:- 대/소문자를 구분하는
using assembly파일 시스템에서using module는 경로를 지정할 때 대/소문자를 구분합니다. -
using module모듈 이름만 있는 경우 대/소문자를 구분하지 않습니다. -
using namespace는 항상 대/소문자를 구분하지 않습니다.
- 대/소문자를 구분하는
-
- 이스케이프 시퀀스는 대
`n/소문자를 구분합니다.
- 이스케이프 시퀀스는 대
참고하십시오
PowerShell