경로를 분할하여 해당 부분을 얻어야 하는 경우가 있습니까? 그렇다면 PowerShell Split-Path
를 신뢰할 수 있는 친구로 생각할 수 있습니다. 파일, 인증서 및 레지스트리 작업을 할 때 경로가 위치를 나타낸다는 것을 알 수 있습니다.
그리고 언젠가는 자동화를 수행할 때 경로의 어느 부분을 반환할지 필터링해야 할 수도 있습니다. 다행히도이 자습서에서는 PowerShell Split-Path
cmdlet를 사용하는 방법을 가르쳐줄 것입니다.
읽어보세요! 계속 읽으며 PowerShell 무기함에 대한 새로운 무기를 얻어보세요!
전제 조건
이 실전 자습서의 예제를 따라하려면 PowerShell 5.1 이상이 포함 된 모든 현대 버전의 Windows를 실행하는 컴퓨터가 필요합니다. 이 자습서에서는 PowerShell 7.1.1을 사용하는 Windows 10 20H2를 사용할 것입니다.
경로에는 무엇이 있습니까?
PowerShell Split-Path
cmdlet로 깊게 파기 전에 경로가 무엇인지 명확하게 알아야합니다. 경로는 특정 형식을 따르는 항목의 위치를 결정합니다.
예를 들어 파일의 경로는 C:\demo\subfolder1\TestFile_11.txt.입니다. 이 경로를 부분으로 나누면 다음이 포함됩니다:
- C: is the drive or the qualifier, or the specified path. The qualifier is the part of the path from the left up to the colon (
:
) character. - \demo\subfolder1\는 폴더 및 하위 폴더 또는 컨테이너입니다.
- TestFile_11.txt은 파일 이름 또는 리프입니다. 리프는 경로의 마지막 요소 또는 부분입니다.
기억하세요, 경로는 파일 및 폴더에만 적용되는 것은 아닙니다. 다른 유효한 경로에는 다음이 포함될 수 있습니다:
- 인증서 (예: Cert:\CurrentUser\My)
- 레지스트리 (예: HKCU:\Software)
- 함수 (예: Function:\New-Guid)
- 변수 (예: Variable:\PSEdition)
- 활성 디렉터리 (예: AD:\CN=Users,DC=Constoso,DC=com)
PowerShell Split-Path 매개변수
Split-Path
와 같은 모든 cmdlet은 cmdlet의 동작을 조작하고 출력을 반환하는 일련의 매개변수와 함께 제공됩니다. 이러한 매개변수가 PowerShell Split-Path
구문을 구성합니다.
-Path
– 이 매개변수는 분할하려는 하나 이상의 경로 문자열을 수용합니다. 이 매개변수는 파이프라인 입력도 허용합니다. 경로에 와일드카드도 허용됩니다.-LiteralPath
–-Path
매개변수와 마찬가지로,-LiteralPath
매개변수도 분할할 경로를 수용합니다. 그러나 이 매개변수는 경로를 그대로 취급합니다. 즉, 이 매개변수를 사용하여 경로를 지정하면 명령이 와일드카드를 해석하지 않습니다.-Resolve
– 이 매개변수는Split-Path
cmdlet에게 제공한 경로에 의해 참조된 파일 또는 항목을 해결하도록 지시합니다. 그 자체적인 특성으로 인해 이 매개변수를-LiteralPath
매개변수와 함께 사용할 수 없습니다.-IsAbsolute
– 이 매개변수는 지정한 경로가 절대 경로인지 여부를 결정하기 위해 부울 값을 반환합니다.
PowerShell
Split-Path
cmdlet에는-Credential
라고 불리는 매개변수도 있습니다. 이 매개변수는 명령줄 개체를 수락하는 것으로 알려져 있습니다. 그러나 Microsoft에 따르면, 이 매개변수는 기본적으로 제공되는 PowerShell 공급자 중 어느 것에서도 지원되지 않으며 사용하면 오류가 발생합니다.
다음 매개변수는 분할 위치 매개변수라고 합니다. 이러한 매개변수는 PowerShell Split-Path
cmdlet에게 경로의 요소 또는 일부를 반환하도록 지시합니다. cmdlet은 경로의 요소 중 하나만 반환할 수 있기 때문에 한 번에 하나의 이러한 매개변수만 사용할 수 있습니다.
-Parent
– 지정한 경로의 상위 위치(항목 또는 파일 이름 없음)를 반환합니다. 이 매개변수는 기본 분할 위치 매개변수이기도 합니다. 즉, 이 매개변수를 생략하고도 상위 위치를 결과로 얻을 수 있습니다.-Leaf
– 경로의 마지막 요소 또는 리프만을 반환합니다.-LeafBase
– 확장자 없이 경로의 마지막 요소 또는 리프만을 반환합니다. 이 매개변수는 PowerShell 6.0 이상에서만 사용할 수 있습니다.-Extension
– 마지막 닷 “.
“부터 경로의 마지막 문자까지만 반환합니다. 이 매개 변수는 PowerShell 6.0 이상에서만 사용할 수 있습니다.-Qualifier
– 경로의 드라이브 또는 한정자만 반환합니다.-NoQualifier
– 경로의 나머지에서 드라이브 또는 한정자를 제거합니다.
PowerShell Split-Path Cmdlet 사용(예제)
PowerShell Split-Path cmdlet을 사용하면 경로의 일부를 분할하고 해체할 수 있습니다. 그런 다음 경로의 어떤 부분을 반환할지 지정할 수 있습니다. 출력 요구 사항에 따라 한정자, 한정자 없는 경로 및 파일 이름을 반환할지 선택할 수 있습니다.
경로의 상위 폴더 가져오기
경로의 상위 폴더를 반환하려면 PowerShell Split-Path
cmdlet을 실행하고 -Parent
매개 변수를 추가하십시오.
아래 결과는 명령이 상위 폴더의 경로를 반환함을 보여줍니다.

팁: 매개 변수 없이 PowerShell Split-Path cmdlet을 실행하면 기본적으로 상위 폴더를 반환하며, 이는
-Parent
매개 변수를 사용하는 것과 동일한 동작입니다.
팁:
-Path
매개 변수는 여러 경로를 허용하므로 단일 명령에서 여러 경로 문자열 값을 분할할 수 있습니다.e.g.,
Split-Path -Path 'c:\folder1','c:\folder2'
한정자 없는 경로 표시
상상해보세요. 한 드라이브에서 다른 드라이브로 폴더 트리 구조를 복제하는 스크립트를 만든다고 상상해보세요 (예: C:\demo\subfolder1에서 D:\demo\subfolder1). 코드를 작성할 때 원본 경로를 분할하여 드라이브 문자를 제외한 폴더 구조만 가져오고 싶을 수 있습니다.
자격 부여자를 제외한 경로를 얻으려면 아래 명령과 같이 PowerShell Split-Path
cmdlet를 -NoQualifier
매개변수와 함께 실행하십시오. 이 명령은 경로를 분할하면서 결과에서 드라이브 문자를 생략합니다.
아래 결과에서 볼 수 있듯이 noQualifier
매개변수를 사용하면 경로를 반환하지만 자격 부여 문자열은 제외됩니다.

경로의 드라이브 또는 자격 부여 가져오기
경우에 따라 자격 부여자 또는 드라이브 문자열 만 반환해야 할 때가 있습니다. 예를 들어 스크립트가 드라이브 문자를 기반으로 결과를 요약하도록 하려는 경우입니다.
이를 위해 아래 PowerShell Split-Path
명령을 -Qualifier
매개변수와 함께 실행하십시오. 이 명령은 경로를 분할하고 결과로 자격 부여 문자열 만 반환합니다.

파일, 디렉터리 또는 항목의 이름 표시
경로를 나무로 생각해보세요. 자격 부여자는 나무 자체이며, 폴더는 가지이며, 마지막에는 잎을 찾을 수 있습니다. 잎은 경로 끝에 있는 임의의 길이가 0이 아닌 문자열입니다.
경로를 분할하여 잎을 가져와야 할 때 아래 Split-Path
명령을 실행하고 -Leaf
매개변수를 추가하십시오.
결과적으로 아래 이미지는 지정한 경로에서 파일 이름만 반환하는 명령을 보여줍니다.

파일 이름과 확장자 분리하기 (≥PowerShell 6.0)
참고: 이 섹션은 PowerShell 6.0 이상에 적용됩니다.
패스를 분리하고 항목을 반환했습니다. 이 경우, 항목은 파일 이름(TestFile_11.txt)으로, 두 부분으로 나눌 수 있습니다 – 베이스와 확장자입니다. PowerShell의 Split-Path
cmdlet을 사용하면 -LeafBase
및 -Extension
매개변수를 사용하여 이 두 부분으로 재분할 수 있습니다.
파일 이름의 베이스와 확장자를 가져오려면 아래 명령을 실행하세요.
패스에 확장자가 없는 경우,
Extension
매개변수는 빈 문자열을 반환합니다.

파일 이름과 확장자 분리하기 (≤ Windows PowerShell 5.1)
유감스럽게도, Windows PowerShell 5.1 및 이전 버전에서는 -LeafBase
및 -Extension
매개변수를 사용할 수 없습니다. 하지만 걱정하지 마세요. PowerShell의 어떤 기능을 사용하여 이러한 매개변수의 출력을 복제할 수 있습니다. Windows PowerShell 5.1만 사용할 수 있는 경우에도 말이죠.
Split-Path
cmdlet 대신에, 다음으로 가장 좋은 방법을 사용할 것입니다 – split()
메서드와 -replace
연산자의 조합입니다.
A PowerShell string object, such as the path, contains a split()
method. This method allows you to split a string into multiple elements based on a delimiter character that you provide. And in the case of paths, the delimiter is the (\\
) back-slash character.
반면에, -replace
연산자를 사용하면 정규 표현식 (RegEx)을 사용하여 문자열을 교체할 수 있습니다.
LeafBase 매개 변수 결과를 모방하려면 PowerShell에서 아래 명령을 실행하세요.
결과적으로 아래 스크린샷은 명령이 파일 이름의 기본 이름만 반환한 것을 보여줍니다.

이제 파일 확장자만 가져오려면 PowerShell에서 아래 명령을 실행하십시오.
아래 결과는 명령이 파일 이름 확장자만 반환한 것을 보여줍니다 – txt
.

경로가 절대인지 확인하기
시스템 관리자로서, 두 가지 경로 유형을 마주칠 것입니다—절대 및 상대적. 하지만 그 차이는 무엇일까요? 절대 경로는 한정자로 시작합니다, 예를 들어 C:\demo 또는 HKCU:\Software와 같이요. 반면에, 상대 경로는 한정자가 없습니다, 예를 들면 .\demo 또는 \folder1\folder2와 같이요.
PowerShell의 Split-Path
cmdlet은 -IsAbsolute
매개변수를 사용하여 절대 경로를 식별하는 데 도움이 될 수 있습니다. 이를 위해 아래 명령을 실행하여 경로가 절대인지 여부를 확인하십시오.
아래에서 볼 수 있듯이 -isAbsolute
매개변수는 경로가 절대(TRUE
)인지 상대(FALSE
)인지를 나타내는 부울 값이 반환됩니다.

와일드카드를 사용하여 경로 분할 및 해결
지금까지 Split-Path
cmdlet으로 분할한 경로는 존재하지 않아도 됩니다. 경로가 존재하든 존재하지 않든이 cmdlet은 분할하고 결과를 제공합니다.
그러나 PowerShell Split-Path
cmdlet에는 -Resolve
라는 다른 매개변수가 있습니다. 이 매개변수를 사용하면 와일드카드로 참조되는 항목을 해결할 수 있습니다. 그리고 이 매개변수를 사용하려면 분할할 경로와 내부 항목이 이미 존재해야합니다.
예를 들어, *.txt
파일 확장명과 일치하는 항목을 반환하려면 아래 명령을 실행하십시오. -Leaf
매개변수는 cmdlet이 부모 컨테이너가 아닌 항목만 반환하도록합니다.
(
*
) 와일드카드는 일치하는 하나 이상의 문자를 나타내고 (?
)는 하나의 문자 와일드카드를 나타냅니다.
아래 결과는 파일 TestFile_11.txt에서 TestFile_20.txt까지의 파일 목록입니다. 이 파일들은 모두 .txt
파일 이름 확장명과 일치합니다.

단일 문자 일치를 해결하려면 와일드카드인 (*)를 와일드카드인 (?)로 바꿔주세요.
아래 출력은 파일 TestFile_20.txt만 표시됩니다. 이 파일은 유일하게 일치하는 파일이기 때문입니다.

경로에 역이스케이프 문자(예: “`)가 포함되어 있다면 경로를 단일 인용부호로 묶어 경로를 해결하세요. 예를 들어 아래 명령은 역이스케이프 문자를 포함하는 경로를 분할하고 해결합니다.

개념 증명으로, 해당 경로를 단일 인용부호로 묶지 않으면 명령이 경로가 존재하지 않는 오류를 반환합니다. 더블 따옴표를 사용하는 경우에도 동일한 오류가 발생합니다.

결론
PowerShell의 Split-Path
cmdlet은 시스템 관리자와 사용자 모두에게 필수적인 도구입니다. 이 튜토리얼은 Split-Path
cmdlet이 주어진 경로를 분할하고 사용하는 매개변수에 따라 특정 요소를 반환하는 방법을 가르치기 위한 것입니다.
이전에 작업에서 Split-Path
를 사용한 적이 있나요? 그렇지 않다면, 이 튜토리얼이 수동 또는 자동화 작업에서 사용하도록 설득되었나요? 또는 PowerShell의 Split-Path
보다 더 나은 경로를 분할하는 다른 방법을 알고 계신가요?