about_FileSystem_Provider
공급자 이름
FileSystem
드라이브
C:
, D:
, Temp:
...
기능
Filter, ShouldProcess
간단한 설명
파일 및 디렉터리에 대한 액세스를 제공합니다.
자세한 설명
PowerShell FileSystem 공급자를 사용하면 PowerShell에서 파일 및 디렉터리를 가져오기, 추가, 변경, 지우기 및 삭제할 수 있습니다.
FileSystem 드라이브는 컴퓨터의 디렉터리와 파일을 포함하는 계층 구조 네임스페이스입니다. FileSystem 드라이브는 논리적 또는 물리적 드라이브, 디렉터리 또는 매핑된 네트워크 공유일 수 있습니다.
PowerShell 버전 7.0부터 라는 TEMP:
드라이브가 사용자의 임시 디렉터리 경로에 매핑됩니다. PowerShell은 .NET GetTempPath() 메서드를 사용하여 임시 폴더의 위치를 확인합니다. Windows에서 위치는 와 동일합니다 $env:TEMP
. 비 Windows 시스템에서 위치는 환경 변수가 정의되지 않은 경우 또는 /tmp
와 $env:TMPDIR
동일합니다.
FileSystem 공급자는 이 문서에서 다루는 다음 cmdlet을 지원합니다.
- Get-Location
- Set-Location
- Get-Item
- Get-ChildItem
- Invoke-Item
- Move-Item
- New-Item
- Remove-Item
- Get-ItemProperty
- Set-ItemProperty
- Clear-Item
- Clear-ItemProperty
- Remove-Item
- Remove-ItemProperty
- Get-Acl
- Set-Acl
- Get-AuthenticodeSignature
- Set-AuthenticodeSignature
이 공급자가 노출하는 형식
파일은 System.IO.FileInfo 클래스의 인스턴스입니다. 디렉터리가 System.IO.DirectoryInfo 클래스의 인스턴스입니다.
FileSystem 드라이브 탐색
FileSystem 공급자는 컴퓨터의 논리 드라이브를 PowerShell 드라이브로 매핑하여 데이터 저장소를 노출합니다. FileSystem 드라이브를 사용하려면 드라이브 이름 뒤에 콜론(:
)을 사용하여 위치를 드라이브로 변경할 수 있습니다.
Set-Location C:
다른 PowerShell 드라이브에서 FileSystem 공급자로 작업할 수도 있습니다. 다른 위치에서 파일 또는 디렉터리를 참조하려면 경로에서 드라이브 이름(C:
, D:
, ...)을 사용합니다.
참고
PowerShell은 별칭을 사용하여 공급자 경로를 사용하는 친숙한 방법을 허용합니다. 및 ls
와 같은 dir
명령은 이제 Get-ChildItemcd
의 별칭이며 Set-Location의 별칭입니다. 및 pwd
는 Get-Location의 별칭입니다.
파일 및 디렉터리 가져오기
cmdlet은 Get-ChildItem
현재 위치에 있는 모든 파일 및 디렉터리를 반환합니다. 기본 제공 매개 변수를 검색하고 사용하여 재귀 깊이를 필터링하고 제어하는 다른 경로를 지정할 수 있습니다.
Get-ChildItem
cmdlet 사용에 대한 자세한 내용은 Get-ChildItem을 참조하세요.
파일 및 디렉터리 복사
cmdlet은 Copy-Item
파일 및 디렉터리를 지정한 위치에 복사합니다.
매개 변수는 와 유사한 Get-ChildItem
필터링 및 재귀에 사용할 수 있습니다.
다음 명령은 "C:\temp" 경로 아래의 모든 파일 및 디렉터리를 "C:\Windows\Temp" 폴더에 복사합니다.
Copy-Item -Path C:\temp\* -Destination C:\Windows\Temp -Recurse -File
Copy-Item
확인 메시지를 표시하지 않고 대상 디렉터리의 파일을 덮어씁니다.
이 명령은 디렉터리에서 C:\a
디렉터리로 C:\a\bb
파일을 복사 a.txt
합니다.
Copy-Item -Path C:\a\a.txt -Destination C:\a\bb\a.txt
디렉터리의 모든 디렉터리와 파일을 C:\a
디렉터리에 C:\c
복사합니다. 복사할 디렉터리가 대상 디렉터리에 이미 있는 경우에는 Force 매개 변수를 사용하지 않은 한 명령이 실패합니다.
Copy-Item -Path C:\a\* -Destination C:\c -Recurse
자세한 내용은 Copy-Item을 참조하세요.
파일 및 디렉터리 이동
이 명령은 디렉터리의 파일을 C:\a
디렉터리로 C:\a\aa
이동합니다c.txt
.
Move-Item -Path C:\a\c.txt -Destination C:\a\aa
이 명령은 이름이 같은 기존 파일을 자동으로 덮어쓰지 않습니다. cmdlet이 기존 파일을 덮어쓰도록 강제하려면 Force 매개 변수를 지정합니다.
이동할 디렉터리가 현재 위치인 경우에는 해당 디렉터리를 이동할 수 없습니다. 를 사용하여 Move-Item
현재 위치에서 디렉터리를 이동하면 이 오류가 표시됩니다.
C:\temp> Move-Item -Path C:\temp\ -Destination C:\Windows\Temp
Move-Item : Cannot move item because the item at 'C:\temp\' is in use.
At line:1 char:1
+ Move-Item C:\temp\ C:\temp2\
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Move-Item], PSInvalidOperationException
+ FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.MoveItemCommand
파일 콘텐츠 관리
파일의 콘텐츠 가져오기
이 명령은 "Test.txt" 파일의 내용을 가져오고 콘솔에 표시합니다.
Get-Content -Path Test.txt
파일 내용을 다른 cmdlet으로 파이프할 수 있습니다. 예를 들어 다음 명령은 파일의 Test.txt
내용을 읽은 다음 ConvertTo-Html cmdlet에 입력으로 제공합니다.
Get-Content -Path Test.txt | ConvertTo-Html
공급자 경로에 달러 기호($
)를 접두사로 추가하여 파일의 콘텐츠를 검색할 수도 있습니다. 경로는 가변 명명 제한으로 인해 중괄호로 묶어야 합니다. 자세한 내용은 about_Variables 참조하세요.
${C:\Windows\System32\Drivers\etc\hosts}
파일에 콘텐츠 추가
이 명령은 파일에 "테스트 콘텐츠" 문자열을 Test.txt
추가합니다.
Add-Content -Path test.txt -Value "test content"
파일의 기존 콘텐츠 Test.txt
는 삭제되지 않습니다.
파일의 내용 바꾸기
이 명령은 파일의 Test.txt
내용을 "테스트 콘텐츠" 문자열로 바꿉니다.
Set-Content -Path test.txt -Value "test content"
의 Test.txt
내용을 덮어씁니다. New-Item cmdlet의 Value 매개 변수를 사용하여 파일을 만들 때 파일에 콘텐츠를 추가할 수 있습니다.
파일의 내용을 반복합니다.
기본적으로 cmdlet은 Get-Content
줄 끝 문자를 구분 기호로 사용하므로 파일의 각 줄을 하나의 문자열로 사용하여 파일을 문자열 컬렉션으로 가져옵니다.
매개 변수를 -Delimiter
사용하여 대체 구분 기호를 지정할 수 있습니다. 이를 섹션의 끝 또는 다음 섹션의 시작을 나타내는 문자로 설정하면 파일을 논리적 부분으로 분할할 수 있습니다.
첫 번째 명령은 파일을 가져오 Employees.txt
고 섹션으로 분할합니다. 각 명령은 "직원 레코드 종료"라는 단어로 끝나고 변수에 $e
저장합니다.
두 번째 명령은 배열 표기법을 사용하여 의 컬렉션 $e
에서 첫 번째 항목을 가져옵니다. PowerShell 배열은 0부터 시작하므로 인덱스 0을 사용합니다.
cmdlet에 대한 Get-Content
자세한 내용은 Get-Content에 대한 도움말 항목을 참조하세요.
배열에 대한 자세한 내용은 about_Arrays 참조하세요.
$e = Get-Content c:\test\employees.txt -Delimited "End Of Employee Record"
$e[0]
보안 설명자 관리
파일에 대한 ACL 보기
이 명령은 System.Security.AccessControl.FileSecurity 개체를 반환합니다.
Get-Acl -Path test.txt | Format-List -Property *
이 개체에 대한 자세한 내용은 명령을 Get-Member cmdlet으로 파이프합니다. 또는 FileSecurity 클래스를 참조하세요.
파일의 ACL 수정
파일에 대한 ACL 만들기 및 설정
파일 및 디렉터리 만들기
디렉터리 만들기
이 명령은 드라이브에 logfiles
C
디렉터리를 만듭니다.
New-Item -Path c:\ -Name logfiles -Type directory
PowerShell에는 New-Item cmdlet을 md
사용하여 새 디렉터리를 만드는 함수(별칭)도 포함되어 mkdir
있습니다.
파일 만들기
이 명령은 디렉터리에 파일을 C:\logfiles
만든 log2.txt
다음 파일에 "테스트 로그" 문자열을 추가합니다.
New-Item -Path c:\logfiles -Name log2.txt -Type file
콘텐츠를 포함하는 파일 만들기
디렉터리에 라는 log2.txt
C:\logfiles
파일을 만들고 "테스트 로그" 문자열을 파일에 추가합니다.
New-Item -Path c:\logfiles -Name log2.txt -Type file -Value "test log"
파일 및 디렉터리 이름 바꾸기
파일 이름 바꾸기
이 명령은 디렉터리의 b.txt
파일 C:\a
이름을 로 바꿉니다a.txt
.
Rename-Item -Path c:\a\a.txt -NewName b.txt
디렉터리 이름 바꾸기
이 명령은 디렉터리의 C:\a\dd
이름을 로 C:\a\cc
바꿉니다.
Rename-Item -Path c:\a\cc -NewName dd
파일 및 디렉터리 삭제
파일 삭제
이 명령은 현재 디렉터리의 파일을 삭제 Test.txt
합니다.
Remove-Item -Path test.txt
와일드카드를 사용하여 파일 삭제
이 명령은 파일 이름 확장명이 있는 현재 디렉터리의 .xml
모든 파일을 삭제합니다.
Remove-Item -Path *.xml
연결된 파일을 호출하여 프로그램 시작
파일 호출
첫 번째 명령은 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
지정된 특성이 있는 파일 및 폴더 가져오기
시스템 파일 가져오기
이 명령은 현재 디렉터리 및 하위 디렉터리에 있는 시스템 파일을 가져옵니다.
매개 변수를 -File
사용하여 파일(디렉터리 아님) 및 -System
매개 변수만 가져와서 "시스템" 특성이 있는 항목만 가져옵니다.
매개 변수를 -Recurse
사용하여 현재 디렉터리와 모든 하위 디렉터리의 항목을 가져옵니다.
Get-ChildItem -File -System -Recurse
숨겨진 파일 가져오기
이 명령은 현재 디렉터리의 숨겨진 파일을 비롯한 모든 파일을 가져옵니다.
특성 매개 변수는 숨겨진 파일을 가져오는 두 개의 값!Directory+Hidden
과 다른 모든 파일을 가져오는 및 !Directory
를 사용합니다.
Get-ChildItem -Attributes !Directory,!Directory+Hidden
dir -att !d,!d+h
는 이 명령과 동일합니다.
압축 및 암호화된 파일 가져오기
이 명령은 압축 또는 암호화된 현재 디렉터리의 파일을 가져옵니다.
및 의 -Attributes
두 값이 있는 매개 변수를 Encrypted
Compressed
사용합니다. 값은 "OR" 연산자를 나타내는 쉼표 ,
로 구분됩니다.
Get-ChildItem -Attributes Compressed,Encrypted
동적 매개 변수
동적 매개 변수는 PowerShell 공급자에 의해 추가되는 cmdlet 매개 변수이며 공급자 사용 드라이브에서 cmdlet을 사용하는 경우에만 사용할 수 있습니다.
<Microsoft.PowerShell.Commands.FileSystemCmdletProviderEncoding 인코딩>
파일 인코딩을 지정합니다. 기본값은 ASCII입니다.
- ASCII: ASCII(7비트) 문자 집합에 대한 인코딩을 사용합니다.
- BigEndianUnicode: big-endian 바이트 순서를 사용하여 UTF-16 형식으로 인코딩합니다.
- 문자열: 문자열에 인코딩 형식을 사용합니다.
- 유니코드: little-endian 바이트 순서를 사용하여 UTF-16 형식으로 인코딩합니다.
- UTF7: UTF-7 형식으로 인코딩합니다.
- UTF8: UTF-8 형식으로 인코딩합니다.
- UTF8BOM: BOM(바이트 순서 표시)을 사용하여 UTF-8 형식으로 인코딩
- UF8NOBOM: BOM(바이트 순서 표시) 없이 UTF-8 형식으로 인코딩
- UTF32: UTF-32 형식으로 인코딩합니다.
- 기본값: 기본 설치된 코드 페이지에서 인코딩합니다.
- OEM: MS-DOS 및 콘솔 프로그램에 대한 기본 인코딩을 사용합니다.
- 알 수 없음: 인코딩 형식이 알 수 없거나 잘못되었습니다. 데이터가 Binary로 처리될 수 있습니다.
지원되는 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>
지정된 특성을 갖는 파일 및 폴더를 가져옵니다. 이 매개 변수는 모든 특성을 지원하며 복잡한 특성 조합을 지정할 수 있도록 합니다.
매개 변수는 -Attributes
Windows PowerShell 3.0에서 도입되었습니다.
매개 변수는 -Attributes
다음 특성을 지원합니다.
- 보관
- Compressed
- 디바이스
- 디렉터리
- 암호화됨
- 숨김
- 보통
- NotContentIndexed
- 오프라인
- 읽기 전용
- ReparsePoint
- SparseFile
- System
- 임시
이러한 특성에 대한 설명은 FileAttributes 열거형을 참조하세요.
다음 연산자를 사용하여 특성을 결합할 수 있습니다.
!
- NOT+
-및,
-또는
연산자 및 해당 특성 사이에는 공백이 허용되지 않습니다. 그러나 쉼표 앞에는 공백이 허용됩니다.
지원되는 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
숨겨진 <System.Management.Automation.SwitchParameter>
숨겨진 파일 및 디렉터리(폴더)만 가져옵니다. 기본적으로 Get-ChildItem 은 숨겨진 항목이 아닌 항목만 가져옵니다.
매개 변수는 -Hidden
Windows PowerShell 3.0에서 도입되었습니다.
숨겨진 항목만 얻으려면 매개 변수, 해당 h
또는 별칭 또는 ah
매개 변수의 -Attributes
Hidden 값을 사용합니다-Hidden
. 숨겨진 항목을 제외하려면 매개 변수를 -Hidden
생략하거나 매개 변수를 -Attributes
사용합니다.
지원되는 Cmdlet
ReadOnly <System.Management.Automation.SwitchParameter>
읽기 전용 파일 및 디렉터리(폴더)만 가져옵니다.
매개 변수는 -ReadOnly
Windows PowerShell 3.0에서 도입되었습니다.
읽기 전용 항목만 얻으려면 매개 변수, 해당 ar
별칭 또는 매개 변수의 -Attributes
ReadOnly 값을 사용합니다-ReadOnly
. 읽기 전용 항목을 제외하려면 매개 변수를 -Attributes
사용합니다.
지원되는 Cmdlet
System <System.Management.Automation.SwitchParameter>
시스템 파일 및 디렉터리(폴더)만 가져옵니다.
매개 변수는 -System
Windows PowerShell 3.0에서 도입되었습니다.
시스템 파일 및 폴더만 얻으려면 매개 변수, 해당 as
별칭 또는 매개 변수의 -Attributes
시스템 값을 사용합니다.-System
시스템 파일 및 폴더를 제외하려면 매개 변수를 -Attributes
사용합니다.
지원되는 Cmdlet
NewerThan <System.DateTime>
파일 값이 LastWriteTime
지정된 날짜보다 큰 경우 를 반환 $True
합니다. 그 외의 경우 $False
를 반환합니다.
Get-Date cmdlet이 반환하는 것과 같은 DateTime 개체 또는 DateTime 개체로 변환할 수 있는 문자열(예: "August 10, 2011 2:00 PM"
)을 입력합니다.
지원되는 Cmdlet
OlderThan <System.DateTime>
파일 값이 LastWriteTime
지정된 날짜보다 작은 경우 를 반환 $True
합니다. 그 외의 경우 $False
를 반환합니다.
Get-Date cmdlet이 반환하는 것과 같은 DateTime 개체 또는 DateTime 개체로 변환할 수 있는 문자열(예: "August 10, 2011 2:00 PM"
)을 입력합니다.
지원되는 Cmdlet
Stream <System.String>
대체 데이터 스트림을 관리합니다. 스트림 이름을 입력합니다. 와일드카드는 파일 시스템 드라이브의 Get-Item 및 Remove-Item 명령에서만 허용됩니다.
지원되는 Cmdlet
원시 <스위치 매개 변수>
줄 바꿈 문자를 무시합니다. 내용을 단일 항목으로 반환합니다.
지원되는 Cmdlet
ItemType <문자열>
이 매개 변수를 사용하면 만들 항목의 tye를 지정할 수 있습니다. New-Item
이 매개 변수의 사용 가능한 값은 사용 중인 현재 공급자에 따라 달라집니다.
드라이브에서 FileSystem
다음 값이 허용됩니다.
- 파일
- 디렉터리
- SymbolicLink
- 분기 동기화
- HardLink
지원되는 Cmdlet
파이프라인 사용
공급자 cmdlet은 파이프라인 입력을 허용합니다. 파이프라인을 사용하여 한 cmdlet에서 다른 공급자 cmdlet으로 공급자 데이터를 전송하여 작업을 간소화할 수 있습니다. 공급자 cmdlet과 함께 파이프라인을 사용하는 방법에 대한 자세한 내용은 이 문서 전체에서 제공하는 cmdlet 참조를 참조하세요.
도움말 보기
Windows PowerShell 3.0부터는 이러한 cmdlet이 파일 시스템 드라이브에서 동작하는 방식을 설명하는 공급자 cmdlet에 대한 사용자 지정된 도움말 항목을 볼 수 있습니다.
파일 시스템 드라이브에 대해 사용자 지정된 도움말 항목을 얻으려면 파일 시스템 드라이브에서 Get-Help 명령을 실행하거나 Get-Help의 매개 변수를 사용하여 -Path
파일 시스템 드라이브를 지정합니다.
Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path c: