간단한 설명
PowerShell에서 와일드카드 문자를 사용하는 방법을 설명합니다.
긴 설명
와일드카드 문자는 하나 이상의 문자를 나타냅니다. 명령에서 단어 패턴을 만드는 데 사용할 수 있습니다. 와일드카드 식은 연산자 또는 와일드카드를 -like 허용하는 매개 변수와 함께 사용됩니다.
예를 들어 디렉터리의 모든 파일과 파일 C:\Techdocs 이름 확장명을 일치하려면 다음을 .ppt 입력합니다.
Get-ChildItem C:\Techdocs\*.ppt
이 경우 별표(*) 와일드카드 문자는 파일 이름 확장명 앞에 .ppt 나타나는 모든 문자를 나타냅니다.
와일드카드 식은 정규식보다 간단합니다. 자세한 내용은 about_Regular_Expressions 참조하세요.
PowerShell은 다음 와일드카드 문자를 지원합니다.
-
*- 0개 이상의 문자 일치-
a*일치aA,ag및Apple -
a*일치하지 않음banana
-
-
?- 문자열의 경우 해당 위치에 있는 한 문자와 일치합니다.-
?n일치an,in및on -
?n일치하지 않음ran
-
-
?- 파일 및 디렉터리에서 해당 위치의 문자 0개 또는 1개와 일치-
?.txt일치 항목a.txt및b.txt -
?.txt일치하지 않음ab.txt
-
-
[ ]- 문자 범위 일치-
[a-l]ook일치book,cook및look -
[a-l]ook일치하지 않음took
-
-
[ ]- 특정 문자 일치-
[bc]ook일치 항목book및cook -
[bc]ook일치하지 않음hook
-
-
`*- 임의의 문자를 리터럴로 일치(와일드카드 문자 아님)-
12`*4가12*4 -
12`*4일치하지 않음1234
-
동일한 단어 패턴에 여러 와일드카드 문자를 포함할 수 있습니다. 예를 들어 문자 a-l로 시작하는 이름의 텍스트 파일을 찾으려면 다음을 입력합니다.
Get-ChildItem C:\Techdocs\[a-l]*.txt
리터럴 문자를 와일드카드 문자로 취급하지 않고 일치하려는 경우가 있을 수 있습니다. 이러한 경우 백틱(`) 문자를 사용하여 와일드카드 문자를 이스케이프하여 리터럴 문자 값을 사용하여 비교할 수 있습니다. 예를 들어 '*hello`?*' "hello?"를 포함하는 문자열과 일치합니다.
많은 cmdlet은 매개 변수 값에 와일드카드 문자를 허용합니다. 각 cmdlet에 대한 도움말 항목에서는 와일드카드 문자를 허용하는 매개 변수에 대해 설명합니다. 와일드카드 문자를 허용하는 매개 변수의 경우 대/소문자를 구분하지 않습니다.
명령 및 스크립트 블록에서 와일드카드 문자를 사용하여 속성 값을 나타내는 단어 패턴을 만들 수 있습니다. 예를 들어 다음 명령은 ServiceType 속성 값에 Interactive가 포함된 서비스를 가져옵니다.
Get-Service | Where-Object {$_.ServiceType -like "*Interactive*"}
다음 예제 if 에서 문은 와일드카드 문자를 사용하여 속성 값을 찾는 조건을 포함합니다. 복원 지점의 설명에 PowerShell이 포함된 경우 이 명령은 복원 지점의 CreationTime 속성 값을 로그 파일에 추가합니다.
$p = Get-ComputerRestorePoint
foreach ($point in $p) {
if ($point.Description -like "*PowerShell*") {
Add-Content -Path C:\TechDocs\RestoreLog.txt "$($point.CreationTime)"
}
}
파일 및 디렉터리 이름의 와일드카드 문자 이스케이프
참고 항목
파일 시스템 항목에 대한 와일드카드 일치는 문자열과 다르게 작동합니다. 자세한 내용은 DirectoryInfo.GetFiles(String, EnumerationOptions) 메서드의 설명 섹션을 참조하세요.
이름에 와일드카드 문자가 포함된 파일 또는 디렉터리에 액세스하려고 하면 와일드카드 문자를 이스케이프해야 합니다. 다음 파일을 고려합니다.
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
대괄호([]) 문자는 와일드카드이므로 항목 cmdlet Get-Item중 하나를 사용하여 파일을 가져올 때 이스케이프되어야 합니다.
PS> Get-Item file`[1`].txt
그러나 이 예제에서는 파일 이름 값이 와일드카드 문자를 지원하는 Path 매개 변수에 바인딩되어 있으므로 실패했습니다. 이 경우 패턴은 `[ 일반 [으로 확인되며 Path 매개 변수는 와일드카드로 해석됩니다. 이 문제를 해결하는 방법에는 세 가지가 있습니다.
백틱 문자를 이스케이프합니다.
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].txtPath 매개 변수에 바인딩되기 전에 백틱이 확장되지 않도록 파일 이름을 작은따옴표로 묶습니다.
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].txtLiteralPath 매개 변수 사용
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
참고하십시오
PowerShell