Get-Content

지정된 위치에 있는 항목의 내용을 가져옵니다.

Syntax

Get-Content
   [-ReadCount <Int64>]
   [-TotalCount <Int64>]
   [-Tail <Int32>]
   [-Path] <String[]>
   [-Filter <String>]
   [-Include <String[]>]
   [-Exclude <String[]>]
   [-Force]
   [-Credential <PSCredential>]
   [-Delimiter <String>]
   [-Wait]
   [-Raw]
   [-Encoding <Encoding>]
   [-AsByteStream]
   [-Stream <String>]
   [<CommonParameters>]
Get-Content
   [-ReadCount <Int64>]
   [-TotalCount <Int64>]
   [-Tail <Int32>]
   -LiteralPath <String[]>
   [-Filter <String>]
   [-Include <String[]>]
   [-Exclude <String[]>]
   [-Force]
   [-Credential <PSCredential>]
   [-Delimiter <String>]
   [-Wait]
   [-Raw]
   [-Encoding <Encoding>]
   [-AsByteStream]
   [-Stream <String>]
   [<CommonParameters>]

Description

cmdlet은 Get-Content 파일의 텍스트 또는 함수의 내용과 같이 경로에 지정된 위치에 있는 항목의 콘텐츠를 가져옵니다. 파일의 경우 콘텐츠는 한 번에 한 줄씩 읽고 개체 컬렉션을 반환하며 각각 콘텐츠 줄을 나타냅니다.

PowerShell 3.0 Get-Content 부터 항목의 시작 또는 끝에서 지정된 줄 수를 가져올 수도 있습니다.

예제

예제 1: 텍스트 파일의 콘텐츠 가져오기

이 예제에서는 현재 디렉터리에 있는 파일의 콘텐츠를 가져옵니다. 파일의 LineNumbers.txt 형식 은 100줄입니다. 이 줄은 X 줄이며 여러 예제에서 사용됩니다.

1..100 | ForEach-Object { Add-Content -Path .\LineNumbers.txt -Value "This is line $_." }
Get-Content -Path .\LineNumbers.txt

This is Line 1
This is Line 2
...
This is line 99.
This is line 100.

배열 값 1-100은 파이프라인 아래로 cmdlet으로 ForEach-Object 전송됩니다. ForEach-Object 는 cmdlet과 Add-Content 함께 스크립트 블록을 사용하여 파일을 만듭니다 LineNumbers.txt . 변수 $_ 는 각 개체가 파이프라인 아래로 전송되므로 배열 값을 나타냅니다. cmdlet은 Get-Content Path 매개 변수를 사용하여 파일을 지정 LineNumbers.txt 하고 PowerShell 콘솔에 콘텐츠를 표시합니다.

예제 2: Get-Content 반환 줄 수 제한

이 명령은 파일의 처음 5줄을 가져옵니다. TotalCount 매개 변수는 처음 5줄의 콘텐츠를 가져옵니다. 이 예제에서는 예제 1에서 참조된 것을 사용합니다 LineNumbers.txt .

Get-Content -Path .\LineNumbers.txt -TotalCount 5

This is Line 1
This is Line 2
This is Line 3
This is Line 4
This is Line 5

예제 3: 텍스트 파일에서 특정 콘텐츠 줄 가져오기

이 명령은 파일에서 특정 줄 수를 가져오고 해당 콘텐츠의 마지막 줄만 표시합니다. TotalCount 매개 변수는 처음 25줄의 콘텐츠를 가져옵니다. 이 예제에서는 예제 1에서 참조된 파일을 사용합니다 LineNumbers.txt .

(Get-Content -Path .\LineNumbers.txt -TotalCount 25)[-1]

This is Line 25

명령은 Get-Content 다음 단계로 가기 전에 명령이 완료되도록 괄호로 래핑됩니다. Get-Content는 줄 배열을 반환합니다. 이렇게 하면 괄호 뒤의 인덱스 표기법을 추가하여 특정 줄 번호를 검색할 수 있습니다. 이 경우 인덱스는 [-1] 검색된 25개 줄의 반환된 배열에서 마지막 인덱스를 지정합니다.

예제 4: 텍스트 파일의 마지막 줄 가져오기

이 명령은 파일에서 마지막 콘텐츠 줄을 가져옵니다. 이 예제에서는 예제 1에서 만든 파일을 사용합니다 LineNumbers.txt .

Get-Item -Path .\LineNumbers.txt | Get-Content -Tail 1

This is Line 100

이 예제에서는 cmdlet을 Get-Item 사용하여 파일을 .에 파이프할 수 있음을 보여 줍니다 Get-Content. Tail 매개 변수는 파일의 마지막 줄을 가져옵니다. 이 메서드는 변수의 모든 줄을 검색하고 인덱스 표기법을 사용하는 [-1] 것보다 빠릅니다.

예제 5: 대체 데이터 스트림의 콘텐츠 가져오기

이 예제에서는 Stream 매개 변수를 사용하여 Windows NTFS 볼륨에 저장된 파일에 대한 대체 데이터 스트림의 콘텐츠를 가져오는 방법을 설명합니다. 이 예제에서는 cmdlet을 Set-Content 사용하여 이름이 지정된 Stream.txt파일에 샘플 콘텐츠를 만듭니다.

Set-Content -Path .\Stream.txt -Value 'This is the content of the Stream.txt file'
# Specify a wildcard to the Stream parameter to display all streams of the recently created file.
Get-Item -Path .\Stream.txt -Stream *

PSPath        : Microsoft.PowerShell.Core\FileSystem::C:\Test\Stream.txt::$DATA
PSParentPath  : Microsoft.PowerShell.Core\FileSystem::C:\Test
PSChildName   : Stream.txt::$DATA
PSDrive       : C
PSProvider    : Microsoft.PowerShell.Core\FileSystem
PSIsContainer : False
FileName      : C:\Test\Stream.txt
Stream        : :$DATA
Length        : 44

# Retrieve the content of the primary stream.
# Note the single quotes to prevent variable substitution.
Get-Content -Path .\Stream.txt -Stream ':$DATA'

This is the content of the Stream.txt file

# Alternative way to get the same content.
Get-Content -Path .\Stream.txt -Stream ""
# The primary stream doesn't need to be specified to get the primary stream of the file.
# This gets the same data as the prior two examples.
Get-Content -Path .\Stream.txt

This is the content of the Stream.txt file

# Use the Stream parameter of Add-Content to create a new Stream containing sample content.
$addContentSplat = @{
    Path = '.\Stream.txt'
    Stream = 'NewStream'
    Value = 'Added a stream named NewStream to Stream.txt'
}
Add-Content @addContentSplat

# Use Get-Item to verify the stream was created.
Get-Item -Path .\Stream.txt -Stream *

PSPath        : Microsoft.PowerShell.Core\FileSystem::C:\Test\Stream.txt::$DATA
PSParentPath  : Microsoft.PowerShell.Core\FileSystem::C:\Test
PSChildName   : Stream.txt::$DATA
PSDrive       : C
PSProvider    : Microsoft.PowerShell.Core\FileSystem
PSIsContainer : False
FileName      : C:\Test\Stream.txt
Stream        : :$DATA
Length        : 44

PSPath        : Microsoft.PowerShell.Core\FileSystem::C:\Test\Stream.txt:NewStream
PSParentPath  : Microsoft.PowerShell.Core\FileSystem::C:\Test
PSChildName   : Stream.txt:NewStream
PSDrive       : C
PSProvider    : Microsoft.PowerShell.Core\FileSystem
PSIsContainer : False
FileName      : C:\Test\Stream.txt
Stream        : NewStream
Length        : 46

# Retrieve the content of your newly created Stream.
Get-Content -Path .\Stream.txt -Stream NewStream

Added a stream named NewStream to Stream.txt

Stream 매개 변수는 FileSystem 공급자동적 매개 변수입니다. 기본적으로 Get-Content 기본값 또는 :$DATA 스트림에서만 데이터를 검색합니다. 스트림 사용하여 특성, 보안 설정 또는 기타 데이터와 같은 숨겨진 데이터를 저장할 수 있습니다. 자식 항목 없이 디렉터리에 저장할 수도 있습니다.

예제 6: 원시 콘텐츠 가져오기

이 예제의 명령은 파일의 내용을 문자열 배열 대신 하나의 문자열로 가져옵니다. 기본적으로 원시 동적 매개 변수가 없으면 콘텐츠가 줄 바꿈으로 구분된 문자열의 배열로 반환됩니다. 이 예제에서는 예제 1에서 참조된 파일을 사용합니다 LineNumbers.txt .

$raw = Get-Content -Path .\LineNumbers.txt -Raw
$lines = Get-Content -Path .\LineNumbers.txt
Write-Host "Raw contains $($raw.Count) lines."
Write-Host "Lines contains $($lines.Count) lines."

Raw contains 1 lines.
Lines contains 100 lines.

예제 7: Get-Content에서 필터 사용

cmdlet에 대한 필터를 Get-Content 지정할 수 있습니다. 필터를 사용하여 Path 매개 변수를 한정하는 경우 경로의 내용을 나타내기 위해 후행 별표(*)를 포함해야 합니다.

다음 명령은 디렉터리에 있는 C:\Temp 모든 *.log 파일의 콘텐츠를 가져옵니다.

Get-Content -Path C:\Temp\* -Filter *.log

예제 8: 파일 내용을 바이트 배열로 가져오기

이 예제에서는 파일의 내용을 단일 개체로 [byte[]] 가져오는 방법을 보여 줍니다.

$byteArray = Get-Content -Path C:\temp\test.txt -AsByteStream -Raw
Get-Member -InputObject $bytearray

TypeName: System.Byte[]

Name           MemberType            Definition
----           ----------            ----------
Count          AliasProperty         Count = Length
Add            Method                int IList.Add(System.Object value)

첫 번째 명령은 AsByteStream 매개 변수를 사용하여 파일에서 바이트 스트림을 가져옵니다. Raw 매개 변수는 바이트가 .로 [System.Byte[]]반환되도록 합니다. Raw 매개 변수가 없는 경우 반환 값은 PowerShell[System.Object[]]에서 해석되는 바이트 스트림입니다.

매개 변수

-AsByteStream

콘텐츠를 바이트 스트림으로 읽어야 되도록 지정합니다. AsByteStream 매개 변수는 Windows PowerShell 6.0에서 도입되었습니다.

Encoding 매개 변수와 함께 AsByteStream 매개 변수를 사용할 때 경고가 발생합니다. AsByteStream 매개 변수는 인코딩을 무시하고 출력은 바이트 스트림으로 반환됩니다.

이진 파일에서 읽고 쓸 때는 ReadCount 매개 변수에 AsByteStream 매개 변수와 값 0을 사용합니다. ReadCount 값 0은 단일 읽기 작업에서 전체 파일을 읽습니다. 기본 ReadCount 값 1은 각 읽기 작업에서 1 바이트를 읽고 각 바이트를 별도의 개체로 변환합니다. 와 함께 Set-ContentAsByteStream 매개 변수를 Set-Content 사용하지 않는 한 단일 바이트 출력을 파이핑하면 오류가 발생합니다.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Credential

참고 항목

이 매개 변수는 PowerShell과 함께 설치된 공급자에서 지원되지 않습니다. 다른 사용자를 가장하거나 이 cmdlet을 실행할 때 자격 증명을 높이려면 Invoke-Command를 사용합니다.

Type:PSCredential
Position:Named
Default value:Current user
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Delimiter

파일을 읽는 동안 개체로 나누는 데 사용하는 구분 Get-Content 기호를 지정합니다. 기본값은 \n줄 끝 문자입니다. 텍스트 파일을 Get-Content 읽을 때 각각 줄 끝 문자로 끝나는 문자열 개체의 컬렉션을 반환합니다. 파일에 Get-Content 없는 구분 기호를 입력하면 전체 파일을 지정하지 않은 단일 개체로 반환합니다.

이 매개 변수를 사용하여 파일 구분 기호를 구분 기호로 지정하여 큰 파일을 더 작은 파일로 분할할 수 있습니다. 구분 기호는 유지되며(dis카드ed 아님) 각 파일 섹션의 마지막 항목이 됩니다.

구분 기호는 FileSystem 공급자가 cmdlet에 Get-Content 추가하는 동적 매개 변수입니다. 이 매개 변수는 파일 시스템 드라이브에서만 작동합니다.

참고 항목

현재 Delimiter 매개 변수의 값이 빈 문자열인 Get-Content 경우 아무 것도 반환하지 않습니다. 이것은 알려진 문제입니다. 전체 파일을 지정하지 않은 단일 문자열로 강제로 Get-Content 반환합니다. 파일에 없는 값을 입력합니다.

Type:String
Position:Named
Default value:End-of-line character
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Encoding

대상 파일의 인코딩 형식을 지정합니다. 기본값은 utf8NoBOM입니다.

이 매개 변수에 허용되는 값은 다음과 같습니다.

  • ascii: ASCII(7비트) 문자 집합의 인코딩을 사용합니다.
  • ansi: 현재 문화권의 ANSI 코드 페이지에 대한 인코딩을 사용합니다. 이 옵션은 PowerShell 7.4에 추가되었습니다.
  • bigendianunicode: big-endian 바이트 순서를 사용하여 UTF-16 형식으로 인코딩합니다.
  • bigendianutf32: big-endian 바이트 순서를 사용하여 UTF-32 형식으로 인코딩합니다.
  • oem: MS-DOS 및 콘솔 프로그램에 대한 기본 인코딩을 사용합니다.
  • unicode: little-endian 바이트 순서를 사용하여 UTF-16 형식으로 인코딩합니다.
  • utf7: UTF-7 형식으로 인코딩합니다.
  • utf8: UTF-8 형식으로 인코딩합니다.
  • utf8BOM: BOM(바이트 순서 표시)을 사용하여 UTF-8 형식으로 인코딩
  • utf8NoBOM: BOM(바이트 순서 표시)이 없는 UTF-8 형식으로 인코딩
  • utf32: UTF-32 형식으로 인코딩합니다.

인코딩은 FileSystem 공급자가 cmdlet에 Get-Content 추가하는 동적 매개 변수입니다. 이 매개 변수는 파일 시스템 드라이브에서만 사용할 수 있습니다.

PowerShell 6.2부터 인코딩 매개 변수는 등록된 코드 페이지(예: ) 또는 등록된 코드 페이지의 문자열 이름(예: -Encoding 1251-Encoding "windows-1251")의 숫자 ID도 허용합니다. 자세한 내용은 Encoding.CodePage에 대한 .NET 설명서를 참조하세요.

PowerShell 7.4부터 인코딩 매개 변수 값을 사용하여 Ansi 수동으로 지정하지 않고도 현재 문화권의 ANSI 코드 페이지에 대한 숫자 ID를 전달할 수 있습니다.

참고 항목

UTF-7*은 더 이상 사용하지 않는 것이 좋습니다. PowerShell 7.1을 기준으로 인코딩 매개 변수를 지정 utf7 하면 경고가 기록됩니다.

Type:Encoding
Accepted values:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:Named
Default value:UTF8NoBOM
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Exclude

문자열 배열로 이 cmdlet이 작업에서 제외하는 항목 또는 항목을 지정합니다. 이 매개 변수의 값은 Path 매개 변수를 한정합니다.

경로 요소 또는 패턴(예: *.txt.)을 입력합니다. 와일드카드 문자를 사용할 수 있습니다.

Exclude 매개 변수는 명령에 항목의 내용(예: C:\Windows\*wild카드 문자가 디렉터리의 내용을 지정하는 경우에만 유효합니다C:\Windows.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Filter

Path 매개 변수를 한정할 필터를 지정합니다. FileSystem 공급자는 필터 사용을 지원하는 유일한 설치된 PowerShell 공급자입니다. FileSystem 필터 언어에 대한 구문은 about_Wild카드 찾을 수 있습니다. 필터는 검색된 후 PowerShell이 개체를 필터링하지 않고 cmdlet이 개체를 가져올 때 적용하기 때문에 다른 매개 변수보다 더 효율적입니다.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Force

Force 는 읽기 전용 특성을 재정의하거나 디렉터리를 만들어 파일 경로를 완료할 수 있습니다. Force 매개 변수는 파일 사용 권한을 변경하거나 보안 제한을 재정의하지 않습니다.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Include

문자열 배열로 이 cmdlet이 작업에 포함하는 항목 또는 항목을 지정합니다. 이 매개 변수의 값은 Path 매개 변수를 한정합니다. 경로 요소 또는 패턴(예: "*.txt".)을 입력합니다. 와일드카드 문자를 사용할 수 있습니다. Include 매개 변수는 명령에 항목의 내용(예: C:\Windows\*wild카드 문자가 디렉터리의 내용을 지정하는 경우에만 유효합니다C:\Windows.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-LiteralPath

하나 이상의 위치에 대한 경로를 지정합니다. LiteralPath값은 입력된 대로 정확하게 사용됩니다. 어떤 문자도 야생으로 해석되지 카드. 경로에 이스케이프 문자가 포함된 경우 작은따옴표로 묶습니다. 작은따옴표는 PowerShell에 문자를 이스케이프 시퀀스로 해석하지 않도록 지시합니다.

자세한 내용은 about_Quoting_Rules 참조하세요.

Type:String[]
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Path

콘텐츠를 가져오는 Get-Content 항목의 경로를 지정합니다. 와일드카드 문자를 사용할 수 있습니다. 경로는 컨테이너가 아닌 항목의 경로여야 합니다. 예를 들어 디렉터리의 경로가 아니라 하나 이상의 파일에 대한 경로를 지정해야 합니다.

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:True

-Raw

줄 바꿈 문자를 무시하고 줄 바꿈이 유지된 파일의 전체 내용을 한 문자열에 반환합니다. 기본적으로 파일의 줄 바꿈 문자는 입력을 문자열 배열로 구분하는 구분 기호로 사용됩니다. 이 매개 변수는 PowerShell 3.0에서 도입되었습니다.

Raw는 FileSystem 공급자가 cmdlet에 Get-Content 추가하는 동적 매개 변수입니다. 이 매개 변수는 파일 시스템 드라이브에서만 작동합니다.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ReadCount

파이프라인을 통해 한 번에 전송되는 콘텐츠 줄 수를 지정합니다. 기본값은 1입니다. 값이 0이거나 음수이면 모든 콘텐츠가 한 번에 전송됩니다.

이 매개 변수는 표시되는 콘텐츠를 변경하지 않지만 콘텐츠를 표시하는 데 걸리는 시간에 영향을 미칩니다. ReadCount이 증가하면 첫 번째 줄을 반환하는 데 걸리는 시간이 늘어나지만 작업의 총 시간은 줄어듭니다. 이렇게 하면 큰 항목이 눈에 띄는 차이를 만들 수 있습니다.

Type:Int64
Position:Named
Default value:1
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Stream

참고 항목

이 매개 변수는 Windows에서만 사용할 수 있습니다.

파일에서 지정된 대체 NTFS 파일 스트림의 내용을 가져옵니다. 스트림 이름을 입력합니다. 와일드카드는 지원되지 않습니다.

Stream은 FileSystem 공급자가 cmdlet에 Get-Content 추가하는 동적 매개 변수입니다. 이 매개 변수는 Windows 시스템의 파일 시스템 드라이브에서만 작동합니다.

이 매개 변수는 Windows PowerShell 3.0에서 도입되었습니다. PowerShell 7.2 Get-Content 에서 디렉터리 및 파일에서 대체 데이터 스트림의 콘텐츠를 검색할 수 있습니다.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Tail

파일 또는 다른 항목의 끝에서 줄 수를 지정합니다. Tail 매개 변수 이름 또는 해당 별칭인 Last을 사용할 수 있습니다. 값은 0 줄을 반환하지 않습니다. 음수 값으로 인해 오류가 발생합니다.

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

Type:Int32
Aliases:Last
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-TotalCount

파일 또는 다른 항목의 시작 부분부터 줄 수를 지정합니다. 값은 0 줄을 반환하지 않습니다. 음수 값으로 인해 오류가 발생합니다.

TotalCount 매개 변수 이름 또는 별칭인 First 또는 Head를 사용할 수 있습니다.

Type:Int64
Aliases:First, Head
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Wait

cmdlet이 무기한 대기하여 파일이 중단될 때까지 열린 상태로 유지합니다. 대기 Get-Content 하는 동안 파일을 초당 한 번 검사 있는 경우 새 줄을 출력합니다. TotalCount 매개 변수 Get-Content 와 함께 사용하는 경우 지정된 파일에서 지정된 줄 수를 사용할 수 있을 때까지 기다립니다. 예를 들어 TotalCount를 10으로 지정하고 파일에 이미 10개 이상의 줄 Get-Content 이 있는 경우 10개의 줄을 반환하고 종료합니다. 파일에 줄이 10개 미만인 경우 도착 시 각 줄을 출력하지만 10 Get-Content 번째 줄이 도착할 때까지 기다렸다가 종료합니다.

Ctrl+C를 눌러 대기를 중단할 수 있습니다. 파일을 삭제하면 종료하지 않는 오류가 발생하여 대기도 중단됩니다.

Wait 는 FileSystem 공급자가 cmdlet에 Get-Content 추가하는 동적 매개 변수입니다. 이 매개 변수는 파일 시스템 드라이브에서만 작동합니다. 대기는 Raw결합할 수 없습니다.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

입력

Int64

읽기 개수 또는 총 개수를 이 cmdlet으로 파이프할 수 있습니다.

String[]

이 cmdlet에 경로를 파이프할 수 있습니다.

PSCredential

이 cmdlet에 자격 증명을 파이프할 수 있습니다.

출력

Byte

AsByteStream 매개 변수를 사용하는 경우 이 cmdlet은 콘텐츠를 바이트로 반환합니다.

String

기본적으로 이 cmdlet은 콘텐츠를 문자열 배열로 한 줄당 하나씩 반환합니다. Raw 매개 변수를 사용하면 파일의 모든 줄이 포함된 단일 문자열을 반환합니다.

참고

PowerShell에는 다음 별칭이 포함됩니다.Get-Content

  • 모든 플랫폼:
    • gc
    • type
  • Windows:
    • cat

cmdlet Get-Content 은 모든 공급자가 노출하는 데이터와 함께 작동하도록 설계되었습니다. 세션에서 공급자를 얻으려면 cmdlet을 Get-PSProvider 사용합니다. 자세한 내용은 about_Providers 참조하세요.