파일 시스템 공급자

업데이트 날짜: 2014년 10월

적용 대상: Windows PowerShell 4.0, Windows PowerShell 5.0

공급자 이름

파일 시스템

드라이브

C, D

간단한 설명

파일 및 디렉터리에 대한 액세스를 제공합니다.

자세한 설명

Windows PowerShell 파일 시스템 공급자를 통해 Windows PowerShell에서 파일 및 디렉터리를 가져오고 추가, 변경 및 삭제할 수 있습니다.

파일 시스템 공급자는 네트워크 공유에 매핑된 드라이브를 포함하여 컴퓨터에 있는 논리 드라이브에 해당하는 Windows PowerShell 드라이브를 공개합니다. 이렇게 하면 Windows PowerShell 내에서 이러한 드라이브를 참조할 수 있습니다.

파일 시스템 공급자를 사용하면 Windows에서 파일 및 폴더를 참조하는 것과 같은 방식으로 Windows PowerShell에서도 참조할 수 있습니다.

드라이브를 참조하려면 드라이브 이름 다음에 콜론을 입력합니다. 대부분의 Windows PowerShell과 마찬가지로, 파일 시스템 공급자는 대/소문자를 구분하지 않습니다. 예를 들어 C 드라이브의 파일 및 폴더를 가져오려면 "C:" 드라이브 또는 "c:" 드라이브를 참조합니다.

정규화된 이름에는 드라이브 이름, 콜론, 디렉터리 및 하위 디렉터리 이름, 파일 이름(해당되는 경우)이 차례로 포함됩니다. 정규화된 이름의 각 요소는 백슬래시(\) 또는 슬래시(/)로 구분해야 합니다.

다음 예에서는 C 드라이브에 있는 Windows 디렉터리의 System32 하위 디렉터리에 있는 Shell.dll 파일의 정규화된 이름을 보여 줍니다.

c:\windows\system32\shell.dll

정규화된 이름의 요소에 공백이 포함된 경우에는 이름을 큰따옴표로 묶어야 합니다.

예:

"C:\Program Files\Internet Explorer\iexplore.exe"

파일 시스템에서의 현재 위치는 점 또는 마침표 문자(.)로 나타냅니다.

예를 들어 현재 위치가 C:\Windows\System32 디렉터리이면 다음과 같이 해당 디렉터리에 있는 Shell.dll 파일을 참조할 수 있습니다.

.\Shell.dll

파일 시스템 공급자를 사용하여 파일 및 폴더를 보고 관리하려면 Get-ChildItem ("dir", "ls") 및 Set-Location ("cd")와 같이 공급자 cmdlet을 사용하세요. Windows PowerShell에는 New-Item cmdlet을 사용하여 새 디렉터리를 만드는 "mkdir" 함수(별칭 = "md")도 포함되어 있습니다.

Windows PowerShell 3.0부터는 이러한 cmdlet이 파일 시스템 드라이브에서 동작하는 방식을 설명하는 공급자 cmdlet에 대한 사용자 지정된 도움말 항목을 볼 수 있습니다.

파일 시스템 드라이브에 맞게 사용자 지정된 도움말 항목을 보려면 파일 시스템 드라이브에서 Get-Help 명령을 실행하고 Get-Help의 Path 매개 변수를 사용하여 파일 시스템 드라이브를 지정하세요.

예:

PS C:\> Get-Help get-childitem

PS HKLM:\> Get-HelpGet-ChildItem -path c:

또한 Windows PowerShell 3.0부터 파일 시스템 공급자는 New-PSDrive cmdlet에 대한 자격 증명을 지원합니다. 자세한 내용은 New-PSDrive cmdlet에 대한 도움말 항목을 참조하세요.

기능

Filter, ShouldProcess

예제

큰 파일 분할

-------------------------- 예제 1 --------------------------

기본적으로 Get-Content cmdlet은 줄 끝 문자를 구분 기호로 사용하므로 파일에서 각 줄이 하나의 문자열로 포함되는 문자열 컬렉션 형태로 파일을 가져옵니다.

Delimiter 매개 변수를 사용하여 대체 구분 기호를 지정할 수 있습니다. 이를 섹션의 끝 또는 다음 섹션의 시작을 나타내는 문자로 설정하면 파일을 논리적 부분으로 분할할 수 있습니다.

첫 번째 명령은 Employees.txt 파일을 가져온 후 각 섹션이 "End of Employee Record"로 끝나는 섹션으로 분할하고 $e 변수에 저장합니다.

두 번째 명령은 배열 표기법을 사용하여 $e에 있는 컬렉션의 첫 번째 항목을 가져옵니다. Windows PowerShell 배열은 0부터 시작하므로 이 명령은 인덱스 0을 사용합니다.

배열에 대한 자세한 내용은 about_Arrays를 참조하세요.

$e = get-content c:\test\employees.txt -delimited "End Of Employee Record"

$e[0]

파일 시스템 탐색

-------------------------- 예제 1 --------------------------

이 명령은 현재 위치를 가져옵니다.

get-location

Get-Location cmdlet에는 Windows 명령 프롬프트의 cd 명령 및 UNIX의 pwd 명령과 같은 명령의 기능이 포함되어 있습니다. 자세한 내용을 보려면 get-help get-location을 입력하세요.

-------------------------- 예제 2 --------------------------

이 명령은 현재 위치를 설정합니다.

set-location C:

파일 및 디렉터리 정보 가져오기

-------------------------- 예제 1 --------------------------

이 명령은 현재 디렉터리에 있는 모든 파일 및 디렉터리를 가져옵니다.

get-childitem

기본적으로 Get-ChildItem cmdlet은 재귀되지 않습니다. 이 명령을 실행할 때 현재 디렉터리에 파일과 폴더가 있는 경우 System.IO.FileInfo 개체와 System.IO.DirectoryInfo 개체가 반환됩니다.

-------------------------- 예제 2 --------------------------

이 명령은 현재 디렉터리의 모든 파일을 가져옵니다.

get-childitem | where-object {!$_.psiscontainer}

이 명령은 Get-ChildItem cmdlet을 사용하여 모든 파일 및 디렉터리를 가져옵니다. 이 명령은 컨테이너가 아닌 (!) 개체만 선택하는 Where-Object cmdlet으로 결과를 파이프합니다.

-------------------------- 예제 3 --------------------------

이 명령은 Get-ChildItem cmdlet을 사용하여 모든 파일 및 디렉터리를 가져옵니다. 이 명령은 컨테이너인 개체만 선택하는 Where-Object로 결과를 파이프합니다.

get-childitem | where-object {$_.psiscontainer}

-------------------------- 예제 4 --------------------------

이 명령은 디렉터리의 속성을 표시합니다.

get-item -path c:\ps-test | format-list -property *

이 명령은 Get-Item cmdlet의 Path 매개 변수를 사용하여 C:\ps-test 디렉터리를 가져옵니다. 이 명령은 디렉터리의 모든(*) 속성과 값을 목록에 표시하는 Format-List cmdlet으로 디렉터리 개체를 파이프합니다.

-------------------------- 예제 5 --------------------------

이 명령은 파일의 속성을 표시합니다.

get-item -path test.txt | format-list -property *

이 명령은 Get-Item cmdlet의 Path 매개 변수를 사용하여 test.txt 파일을 가져옵니다. 이 명령은 파일의 모든(*) 속성과 값을 목록에 표시하는 Format-List cmdlet으로 파일 개체를 파이프합니다.

파일 및 디렉터리 복사

-------------------------- 예제 1 --------------------------

이 명령은 C:\A 디렉터리에서 C:\A\Bb 디렉터리로 A.txt 파일을 복사합니다.

copy-item -path C:\a\a.txt -destination C:\a\bb\a.txt

이 명령은 확인 메시지 없이 대상 디렉터리의 파일을 덮어씁니다.

-------------------------- 예제 2 --------------------------

이 명령은 C:\A\Bb 디렉터리에서 파일 이름 확장명이 .txt인 모든 파일을 C:\A\Cc\Ccc\ 디렉터리로 복사합니다.

copy-item -path C:\a\bb\*.txt -destination C:\a\cc\ccc\

이 명령은 파일의 원래 이름을 사용합니다. 따라서 확인 메시지 없이 대상 디렉터리의 기존 파일을 덮어씁니다.

-------------------------- 예제 3 --------------------------

C:\a 디렉터리의 모든 파일 및 디렉터리를 C:\c 디렉터리로 복사합니다. 복사할 디렉터리가 대상 디렉터리에 이미 있는 경우에는 Force 매개 변수를 사용하지 않은 한 명령이 실패합니다.

copy-item -path C:\a\* -destination C:\c -recurse

파일 및 디렉터리 이동

-------------------------- 예제 1 --------------------------

이 명령은 C:\A 디렉터리에서 C:\A\Aa 디렉터리로 C.txt 파일을 이동합니다.

move-item -path C:\a\c.txt -destination C:\a\aa

이 명령은 이름이 같은 기존 파일을 자동으로 덮어쓰지 않습니다. cmdlet이 기존 파일을 덮어쓰도록 강제하려면 Force 매개 변수를 지정합니다.

-------------------------- 예제 2 --------------------------

이 명령은 C:\A 디렉터리와 모든 내용을 C:\B 디렉터리로 이동합니다.

move-item -path C:\a -destination C:\b

이동할 디렉터리가 현재 위치인 경우에는 해당 디렉터리를 이동할 수 없습니다.

파일 내용 관리

-------------------------- 예제 1 --------------------------

이 명령은 Test.txt 파일에 "test content" 문자열을 추가합니다.

add-content -path test.txt -value "test content"

Test.txt 파일의 기존 내용은 삭제되지 않습니다.

-------------------------- 예제 2 --------------------------

이 명령은 Test.txt 파일의 내용을 가져와서 콘솔에 표시합니다.

get-content -path test.txt

파일 내용을 다른 cmdlet으로 파이프할 수 있습니다. 예를 들어 다음 명령은 Test.txt 파일의 내용을 읽은 다음 ConvertTo-HTML cmdlet에 제공합니다. get-content -path test.txt | convertto-html

-------------------------- 예제 3 --------------------------

이 명령은 Test.txt 파일의 내용을 "test content" 문자열로 바꿉니다.

set-content -path test.txt -value "test content"

또한 Test.txt의 내용을 덮어씁니다. New-Item cmdlet의 Value 매개 변수를 사용하여 파일을 만들 때 내용을 추가할 수 있습니다.

보안 설명자 관리

-------------------------- 예제 1 --------------------------

이 명령은 System.Security.AccessControl.FileSecurity 개체를 반환합니다.

get-acl -path test.txt | format-list -property *

이 개체에 대한 자세한 내용을 보려면 명령을 Get-Member cmdlet으로 파이프하세요. 또는 MSDN(Microsoft Developer Network) 라이브러리의 "FileSecurity Class(FileSecurity 클래스)"(https://go.microsoft.com/fwlink/?LinkId=145718)를 참조하세요.

-------------------------- 예제 2 --------------------------

이 명령은 System.Security.AccessControl.DirectorySecurity 개체를 반환합니다.

get-acl -path test_directory | format-list -property *

이 개체에 대한 자세한 내용을 보려면 명령을 Get-Member cmdlet으로 파이프하세요. 또는 MSDN 라이브러리의 "DirectorySecurity Class(DirectorySecurity 클래스)"(https://go.microsoft.com/fwlink/?LinkId=145736)를 참조하세요.

파일 및 디렉터리 만들기

-------------------------- 예제 1 --------------------------

이 명령은 C: 드라이브에 Logfiles 디렉터리를 만듭니다.

new-item -path c:\ -name logfiles -type directory

-------------------------- 예제 2 --------------------------

이 명령은 C:\Logfiles 디렉터리에 Log2.txt 파일을 만들고 이 파일에 "test log" 문자열을 추가합니다.

new-item -path c:\logfiles -name log.txt -type file

-------------------------- 예제 3 --------------------------

C:\logfiles 디렉터리에 Log2.txt라는 파일을 만들고 이 파일에 "test log" 문자열을 추가합니다.

new-item -path c:\logfiles -name log2.txt -type file -value "test log"

파일 및 디렉터리 이름 바꾸기

-------------------------- 예제 1 --------------------------

이 명령은 C:\A 디렉터리에 있는 A.txt 파일의 이름을 B.txt로 바꿉니다.

rename-item -path c:\a\a.txt -newname b.txt

-------------------------- 예제 2 --------------------------

이 명령은 C:\A\Cc 디렉터리의 이름을 C:\A\Dd로 바꿉니다.

rename-item -path c:\a\cc -newname dd

파일 및 디렉터리 삭제

-------------------------- 예제 1 --------------------------

이 명령은 현재 디렉터리에서 Test.txt 파일을 삭제합니다.

remove-item -path test.txt

-------------------------- 예제 2 --------------------------

이 명령은 현재 디렉터리에서 파일 이름 확장명이 .xml인 모든 파일을 삭제합니다.

remove-item -path *.xml

연결된 파일을 호출하여 프로그램 시작

-------------------------- 예제 1 --------------------------

첫 번째 명령은 Get-Service cmdlet을 사용하여 로컬 서비스에 대한 정보를 가져옵니다.

이 명령은 정보를 Export-Csv cmdlet으로 파이프하고 해당 정보를 Services.csv 파일에 저장합니다.

두 번째 명령은 Invoke-Item을 사용하여 .csv 확장명과 연결된 프로그램에서 Services.csv 파일을 엽니다.

get-service | export-csv -path services.csv

invoke-item -path services.csv

지정한 특성의 파일 및 폴더 가져오기

-------------------------- 예제 1 --------------------------

이 명령은 현재 디렉터리 및 하위 디렉터리에 있는 시스템 파일을 가져옵니다.

이 명령은 File 매개 변수를 사용하여 디렉터리가 아닌 파일만 가져오거나 System 매개 변수를 사용하여 System 특성을 갖는 항목만 가져옵니다.

Recurse 매개 변수를 사용하여 현재 디렉터리와 모든 하위 디렉터리의 항목을 가져옵니다.

get-childitem -file -system  -recurse

-------------------------- 예제 2 --------------------------

이 명령은 현재 디렉터리의 숨겨진 파일을 비롯한 모든 파일을 가져옵니다.

이 명령은 숨겨진 파일을 가져오는 !Directory+Hidden 값과 다른 모든 파일을 가져오는 !Directory 값을 갖는 Attributes 매개 변수를 사용합니다.

Get-ChildItem -attributes !Directory,!Directory+Hidden

"dir -att !d,!d+h"는 이 명령을 사용하는 것과 동일한 결과를 가져옵니다.

-------------------------- 예제 3 --------------------------

이 명령은 압축 또는 암호화된 현재 디렉터리의 파일을 가져옵니다.

이 명령은 Compressed 및 Encrypted의 두 값을 갖는 Attributes 매개 변수를 사용합니다. 값은 OR 연산자를 나타내는 쉼표(,)로 구분됩니다.

Get-ChildItem -attributes Compressed,Encrypted

동적 매개 변수

동적 매개 변수는 Windows PowerShell 공급자가 추가하고 이 공급자가 사용할 수 있는 드라이브에서 cmdlet을 사용하는 경우에만 사용할 수 있는 cmdlet 매개 변수입니다.

Encoding <Microsoft.PowerShell.Commands.FileSystemCmdletProviderEncoding>

파일 인코딩을 지정합니다. 기본값은 ASCII입니다.

설명

Unknown

인코딩 유형을 알 수 없거나 잘못되었습니다. 데이터가 Binary로 처리될 수 있습니다.

문자열

문자열에 대한 인코딩 유형을 사용합니다.

유니코드

Little-Endian 바이트 순서를 사용하여 UTF-16 형식으로 인코딩합니다.

Byte

문자 집합을 일련의 바이트로 인코딩합니다.

BigEndianUnicode

Big-Endian 바이트 순서를 사용하여 UTF-16 형식으로 인코딩합니다.

UTF8

UTF-8 형식으로 인코딩합니다.

UTF7

UTF-7 형식으로 인코딩합니다.

ASCII

ASCII(7비트) 문자 집합에 대한 인코딩을 사용합니다.

지원되는 cmdlet:

Delimiter <System.String>

Get-Content가 파일을 읽는 동안 파일을 개체로 나누는 데 사용하는 구분 기호를 지정합니다.

기본값은 줄 끝 문자에 해당하는 "\n"입니다.

따라서 기본적으로 텍스트 파일을 읽는 동안 Get-Content는 각각이 줄 끝 문자로 끝나는 문자열 개체의 컬렉션을 반환합니다.

파일에서 존재하지 않는 구분 기호를 입력하면 Get-Content는 전체 파일을 구분되지 않은 단일 개체로 반환합니다.

이 매개 변수를 사용하여 "End of Example"과 같은 파일 구분 기호를 지정하여 큰 파일을 여러 개의 더 작은 파일로 분할할 수 있습니다. 구분 기호는 보존되고(삭제되지 않음) 각 파일 섹션의 마지막 항목이 됩니다.

문제 해결 참고: 현재 Delimiter 매개 변수의 값이 빈 문자열이면 Get-Content는 아무것도 반환하지 않습니다. 이것은 알려진 문제입니다. 강제로 Get-Content가 전체 파일을 구분되지 않은 단일 문자열로 반환하게 하려면 파일에 존재하지 않는 값을 입력합니다.

지원되는 cmdlet:

Wait <System.Management.Automation.SwitchParameter>

내용이 파일에 추가되기를 기다립니다. 내용이 추가되면 추가된 내용을 반환합니다. 내용이 변경된 경우에는 전체 파일을 반환합니다.

기다리는 동안 Get-Content는 Ctrl+C를 눌러 사용자가 중단할 때까지 1초에 한 번씩 파일을 검사합니다.

지원되는 cmdlet:

Attributes <FlagsExpression[System.IO.FileAttributes]>

지정된 특성을 갖는 파일 및 폴더를 가져옵니다. 이 매개 변수는 모든 특성을 지원하며 복잡한 특성 조합을 지정할 수 있도록 합니다.

Attributes 매개 변수는 Windows PowerShell 3.0에서 도입되었습니다.

Attributes 매개 변수는 다음 특성을 지원합니다. Archive, Compressed, Device, Directory, Encrypted, Hidden, Normal, NotContentIndexed, Offline, ReadOnly, ReparsePoint, SparseFile, System, Temporary. 이러한 특성에 대한 설명을 보려면 FileAttributes 열거형(https://go.microsoft.com/fwlink/?LinkId=201508)을 참조하세요.

다음 연산자를 사용하여 특성을 결합할 수 있습니다.

! NOT

+ AND

, OR

연산자 및 해당 특성 사이에는 공백이 허용되지 않습니다. 그러나 쉼표 앞에는 공백이 허용됩니다.

지원되는 cmdlet:

Directory <System.Management.Automation.SwitchParameter>

디렉터리(폴더)를 가져옵니다.

Directory 매개 변수는 Windows PowerShell 3.0에서 도입되었습니다.

디렉터리만 가져오려면 Directory 매개 변수를 사용하고 File 매개 변수는 생략하세요. 디렉터리를 제외하려면 File 매개 변수를 사용하고 Directory 매개 변수는 생략하거나 Attributes 매개 변수를 사용하세요.

지원되는 cmdlet:

File <System.Management.Automation.SwitchParameter>

파일을 가져옵니다.

File 매개 변수는 Windows PowerShell 3.0에서 도입되었습니다.

파일만 가져오려면 File 매개 변수를 사용하고 Directory 매개 변수는 생략하세요. 파일을 제외하려면 Directory 매개 변수를 사용하고 File 매개 변수는 생략하거나 Attributes 매개 변수를 사용하세요.

지원되는 cmdlet:

Hidden <System.Management.Automation.SwitchParameter>

숨겨진 파일 및 디렉터리(폴더)만 가져옵니다. 기본적으로Get-ChildItem은 숨겨지지 않은 항목만 가져옵니다.

Hidden 매개 변수는 Windows PowerShell 3.0에서 도입되었습니다.

숨겨진 항목을 가져오려면 Hidden 매개 변수, 해당 "h" 또는 "ah" 별칭이나 Attributes 매개 변수의 Hidden 값을 사용합니다. 숨겨진 항목을 제외하려면 Hidden 매개 변수를 생략하거나 Attributes 매개 변수를 사용하세요.

지원되는 cmdlet:

ReadOnly <System.Management.Automation.SwitchParameter>

읽기 전용 파일 및 디렉터리(폴더)만 가져옵니다.

ReadOnly 매개 변수는 Windows PowerShell 3.0에서 도입되었습니다.

읽기 전용 항목만 가져오려면 ReadOnly 매개 변수, 해당 "ar" 별칭 또는 Attributes 매개 변수의 ReadOnly 값을 사용합니다. 읽기 전용 항목을 제외하려면 Attributes 매개 변수를 사용하세요.

지원되는 cmdlet:

System <System.Management.Automation.SwitchParameter>

시스템 파일 및 디렉터리(폴더)만 가져옵니다.

System 매개 변수는 Windows PowerShell 3.0에서 도입되었습니다.

시스템 파일 및 폴더만 가져오려면 System 매개 변수, 해당 "as" 별칭 또는 Attributes 매개 변수의 System 값을 사용합니다. 시스템 파일 및 폴더를 제외하려면 Attributes 매개 변수를 사용합니다.

지원되는 cmdlet:

NewerThan <System.DateTime>

파일의 LastWriteTime 값이 지정된 날짜보다 크면 "True"($True)를 반환합니다. 그렇지 않으면 "False"($False)를 반환합니다.

Get-Date cmdlet이 반환하는 개체와 같은 DateTime 개체를 입력하거나 DateTime 개체로 변환될 수 있는 문자열(예: "August 10, 2011 2:00 PM")을 입력합니다.

지원되는 cmdlet:

OlderThan <System.DateTime>

파일의 LastWriteTime 값이 지정된 날짜보다 작으면 "True"($True)를 반환합니다. 그렇지 않으면 "False"($False)를 반환합니다.

Get-Date cmdlet이 반환하는 개체와 같은 DateTime 개체를 입력하거나 DateTime 개체로 변환될 수 있는 문자열(예: "August 10, 2011 2:00 PM")을 입력합니다.

지원되는 cmdlet:

Stream <System.String []>

대체 데이터 스트림을 관리합니다. 스트림 이름을 입력합니다. 와일드카드는 파일 시스템 드라이브의 파일 시스템용 Get-Item파일 시스템용 Remove-Item 명령에서만 허용됩니다.

지원되는 cmdlet:

Raw <SwitchParameter>

줄 바꿈 문자를 무시합니다. 내용을 단일 항목으로 반환합니다.

지원되는 cmdlet:

See Also

Concepts

about_Providers