파일, 폴더, 레지스트리 키 작업
이 샘플은 Windows 플랫폼에만 적용됩니다.
PowerShell에서는 명사 항목을 사용하여 PowerShell 드라이브에 있는 항목을 나타냅니다. PowerShell FileSystem 공급자를 처리할 때 Item은 파일, 폴더 또는 PowerShell 드라이브일 수 있습니다. 이러한 항목을 나열하고 작업하는 것은 대부분의 관리 설정에서 중요한 기본 작업이므로 이러한 작업을 자세히 설명하려고 합니다.
파일, 폴더, 레지스트리 키 열거
특정 위치에서 항목 컬렉션을 가져오는 것은 일반적인 작업 Get-ChildItem
이므로 cmdlet은 폴더와 같은 컨테이너 내에 있는 모든 항목을 반환하도록 특별히 설계되었습니다.
C:\Windows
폴더에 직접 포함되어 있는 모든 파일과 폴더를 반환하려면 다음과 같이 입력합니다.
PS> Get-ChildItem -Path C:\Windows
Directory: Microsoft.PowerShell.Core\FileSystem::C:\Windows
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2006-05-16 8:10 AM 0 0.log
-a--- 2005-11-29 3:16 PM 97 acc1.txt
-a--- 2005-10-23 11:21 PM 3848 actsetup.log
...
목록은 명령을 입력하거나 ls
UNIX 명령 셸에 cmd.exe
명령을 입력 dir
할 때 표시되는 것과 유사합니다.
Get-ChildItem
cmdlet의 매개 변수를 사용하여 복잡한 목록을 표시할 수 있습니다. 다음과 같이 입력하여 Get-ChildItem
cmdlet의 구문을 표시할 수 있습니다.
Get-Command -Name Get-ChildItem -Syntax
이러한 매개 변수를 혼합하고 일치하여 고도로 사용자 지정된 출력을 가져올 수 있습니다.
모든 포함된 항목 나열
Windows 폴더 내의 항목과 하위 폴더 내에 포함된 항목을 모두 보려면 다음의 Get-ChildItem
Recurse 매개 변수를 사용합니다. 목록에는 Windows 폴더 내의 모든 항목과 하위 폴더의 항목이 표시됩니다. 예시:
PS> Get-ChildItem -Path C:\WINDOWS -Recurse
Directory: Microsoft.PowerShell.Core\FileSystem::C:\WINDOWS
Directory: Microsoft.PowerShell.Core\FileSystem::C:\WINDOWS\AppPatch
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2004-08-04 8:00 AM 1852416 AcGenral.dll
...
이름별로 항목 필터링
항목의 이름만 표시하려면 Get-Childitem
의 Name 매개 변수를 사용합니다.
PS> Get-ChildItem -Path C:\WINDOWS -Name
addins
AppPatch
assembly
...
숨겨진 항목을 강제로 나열
파일 탐색기 또는 cmd.exe
에서 숨겨진 항목은 Get-ChildItem
명령의 출력에 표시되지 않습니다. 숨겨진 항목을 표시하려면 .의 Get-ChildItem
Force 매개 변수를 사용합니다.
예시:
Get-ChildItem -Path C:\Windows -Force
Get-ChildItem
명령의 일반적인 동작을 강제로 재정의할 수 있으므로 이 매개 변수의 이름은 Force입니다. Force는 cmdlet이 일반적으로 수행하지 않는 작업을 강제로 수행하는 데 널리 사용되는 매개 변수입니다. 단, 시스템 보안을 저해하는 작업은 수행할 수 없습니다.
와일드카드와 항목 이름 일치
이 Get-ChildItem
명령은 나열할 항목의 경로에서 wild카드s를 허용합니다.
와일드카드 일치는 PowerShell 엔진에서 처리되므로 와일드카드를 허용하는 모든 cmdlet은 동일한 표기법을 사용하고 일치 동작이 동일합니다. PowerShell 와일드카드 표기법은 다음과 같습니다.
- 별표(
*
)는 0개 이상의 모든 문자를 일치시킵니다. - 물음표(
?
)는 정확히 한 문자와 일치합니다. - 왼쪽 대괄호(
[
) 문자 및 오른쪽 대괄호(]
) 문자는 일치시킬 문자 집합을 묶습니다.
다음은 wild카드 사양의 작동 방식에 대한 몇 가지 예입니다.
Windows 디렉터리에서 접미사가 .log
있는 모든 파일과 기본 이름에 정확히 5자의 파일을 찾으려면 다음 명령을 입력합니다.
PS> Get-ChildItem -Path C:\Windows\?????.log
Directory: Microsoft.PowerShell.Core\FileSystem::C:\Windows
Mode LastWriteTime Length Name
---- ------------- ------ ----
...
-a--- 2006-05-11 6:31 PM 204276 ocgen.log
-a--- 2006-05-11 6:31 PM 22365 ocmsn.log
...
-a--- 2005-11-11 4:55 AM 64 setup.log
-a--- 2005-12-15 2:24 PM 17719 VxSDM.log
...
Windows 디렉터리에서 문자 x
로 시작하는 모든 파일을 찾으려면 다음과 같이 입력합니다.
Get-ChildItem -Path C:\Windows\x*
이름이 "x" 또는 "z"로 시작하는 모든 파일을 찾으려면 다음을 입력합니다.
Get-ChildItem -Path C:\Windows\[xz]*
wild카드에 대한 자세한 내용은 about_Wild카드 참조하세요.
항목 제외
Get-ChildItem
의 Exclude 매개 변수를 사용하여 특정 항목을 제외할 수 있습니다. 이렇게 하면 단일 문에서 복잡한 필터링을 수행할 수 있습니다.
예를 들어 System32 폴더에서 Windows 시간 서비스 DLL을 찾으려고 하지만 DLL 이름이 “W”로 시작하고 “32”가 포함되어 있다는 것만 알고 있다고 가정합니다.
같은 w*32*.dll
식은 조건을 충족하는 모든 DLL을 찾을 수 있지만 파일을 추가로 필터링하고 win32 파일을 생략할 수 있습니다. win*
패턴과 함께 Exclude 매개 변수를 사용하여 해당 파일을 생략할 수 있습니다.
PS> Get-ChildItem -Path C:\WINDOWS\System32\w*32*.dll -Exclude win*
Directory: C:\WINDOWS\System32
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 3/18/2019 9:43 PM 495616 w32time.dll
-a--- 3/18/2019 9:44 PM 35328 w32topl.dll
-a--- 1/24/2020 5:44 PM 401920 Wldap32.dll
-a--- 10/10/2019 5:40 PM 442704 ws2_32.dll
-a--- 3/18/2019 9:44 PM 66048 wsnmp32.dll
-a--- 3/18/2019 9:44 PM 18944 wsock32.dll
-a--- 3/18/2019 9:44 PM 64792 wtsapi32.dll
Get-ChildItem 매개 변수 혼합
동일한 명령에서 cmdlet의 Get-ChildItem
여러 매개 변수를 사용할 수 있습니다. 매개 변수를 혼합하기 전에 wild카드 일치를 이해해야 합니다. 예를 들어 다음 명령은 결과를 반환하지 않습니다.
Get-ChildItem -Path C:\Windows\*.dll -Recurse -Exclude [a-y]*.dll
Windows 폴더에 문자 "z"로 시작하는 두 개의 DLL이 있더라도 결과가 없습니다.
와일드카드를 경로의 일부로 지정했기 때문에 결과가 반환되지 않습니다. 명령이 재귀적 Get-ChildItem
이었음에도 불구하고 cmdlet은 이름이 으로 끝나는 .dll
Windows 폴더에 있는 항목으로 항목을 제한했습니다.
이름이 특수 패턴과 일치하는 파일에 대한 재귀 검색을 지정하려면 Include 매개 변수를 사용합니다.
PS> Get-ChildItem -Path C:\Windows -Include *.dll -Recurse -Exclude [a-y]*.dll
Directory: Microsoft.PowerShell.Core\FileSystem::C:\Windows\System32\Setup
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2004-08-04 8:00 AM 8261 zoneoc.dll
Directory: Microsoft.PowerShell.Core\FileSystem::C:\Windows\System32
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2004-08-04 8:00 AM 337920 zipfldr.dll
PowerShell