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을 지원합니다.

이 공급자가 노출하는 형식

파일은 System.IO.FileInfo 클래스의 인스턴스입니다. 디렉터리가 System.IO.DirectoryInfo 클래스의 인스턴스입니다.

FileSystem 공급자는 컴퓨터의 논리 드라이브를 PowerShell 드라이브로 매핑하여 데이터 저장소를 노출합니다. FileSystem 드라이브를 사용하려면 드라이브 이름 뒤에 콜론(:)을 사용하여 위치를 드라이브로 변경할 수 있습니다.

Set-Location C:

다른 PowerShell 드라이브에서 FileSystem 공급자로 작업할 수도 있습니다. 다른 위치에서 파일 또는 디렉터리를 참조하려면 경로에서 드라이브 이름(C:, D:, ...)을 사용합니다.

참고

PowerShell은 별칭을 사용하여 공급자 경로를 사용하는 친숙한 방법을 허용합니다. 및 ls 와 같은 dir 명령은 이제 Get-ChildItemcd의 별칭이며 Set-Location의 별칭입니다. 및 pwdGet-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 만들기 및 설정

파일 및 디렉터리 만들기

디렉터리 만들기

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

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.txtC:\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 두 값이 있는 매개 변수를 EncryptedCompressed 사용합니다. 값은 "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 매개 변수의 -AttributesHidden 값을 사용합니다-Hidden. 숨겨진 항목을 제외하려면 매개 변수를 -Hidden 생략하거나 매개 변수를 -Attributes 사용합니다.

지원되는 Cmdlet

ReadOnly <System.Management.Automation.SwitchParameter>

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

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

읽기 전용 항목만 얻으려면 매개 변수, 해당 ar 별칭 또는 매개 변수의 -AttributesReadOnly 값을 사용합니다-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-ItemRemove-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:

추가 정보