다음을 통해 공유


Out-File

출력을 파일로 보냅니다.

구문

Out-File
   [-FilePath] <string>
   [[-Encoding] <Encoding>]
   [-Append]
   [-Force]
   [-NoClobber]
   [-Width <int>]
   [-NoNewline]
   [-InputObject <psobject>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
Out-File
   [[-Encoding] <Encoding>]
   -LiteralPath <string>
   [-Append]
   [-Force]
   [-NoClobber]
   [-Width <int>]
   [-NoNewline]
   [-InputObject <psobject>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]

Description

cmdlet은 Out-File 출력을 파일로 보냅니다. 암시적으로 PowerShell의 서식 시스템을 사용하여 파일에 씁니다. 파일은 터미널과 동일한 표시 표현을 받습니다. 즉, 모든 입력 개체가 문자열이 아니면 출력이 프로그래밍 방식 처리에 적합하지 않을 수 있습니다.

리디렉션 연산>자()를 사용하여 PowerShell 명령(cmdlet, 함수, 스크립트)의 출력을 리디렉션하는 것은 추가 매개 변수 없이 파이핑과 Out-File 기능적으로 동일합니다. PowerShell 7.4는 네이티브 명령의 stdout 스트림을 리디렉션하는 데 사용할 때 리디렉션 연산자의 동작을 변경했습니다. 리디렉션에 대한 자세한 내용은 about_Redirection 참조하세요.

예제

예제 1: 출력 보내기 및 파일 만들기

이 예제에서는 로컬 컴퓨터의 프로세스 목록을 파일로 보내는 방법을 보여줍니다. 파일이 없 Out-File 으면 지정된 경로에 파일을 만듭니다.

Get-Process | Out-File -FilePath .\Process.txt
Get-Content -Path .\Process.txt

NPM(K)    PM(M)      WS(M)     CPU(s)      Id  SI ProcessName
 ------    -----      -----     ------      --  -- -----------
     29    22.39      35.40      10.98   42764   9 Application
     53    99.04     113.96       0.00   32664   0 CcmExec
     27    96.62     112.43     113.00   17720   9 Code

cmdlet은 Get-Process 로컬 컴퓨터에서 실행되는 프로세스 목록을 가져옵니다. 프로세스 개체는 파이프라인을 cmdlet으로 Out-File 보냅니다. Out-File에서는 FilePath 매개 변수를 사용하고 Process.txt이라는 현재 디렉터리에 파일을 만듭니다. 이 Get-Content 명령은 파일에서 콘텐츠를 가져오고 PowerShell 콘솔에 표시합니다.

예제 2: 기존 파일을 덮어쓰지 않도록 방지

이 예제에서는 기존 파일을 덮어쓰지 않도록 합니다. 기본적으로 Out-File 기존 파일을 덮어씁니다.

Get-Process | Out-File -FilePath .\Process.txt -NoClobber

Out-File : The file 'C:\Test\Process.txt' already exists.
At line:1 char:15
+ Get-Process | Out-File -FilePath .\Process.txt -NoClobber
+               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

cmdlet은 Get-Process 로컬 컴퓨터에서 실행되는 프로세스 목록을 가져옵니다. 프로세스 개체는 파이프라인을 cmdlet으로 Out-File 보냅니다. Out-FileFilePath 매개 변수를 사용하고 Process.txt 현재 디렉터리의 파일에 쓰려고 시도합니다. NoClobber 매개 변수는 파일을 덮어쓰지 못하게 하고 파일이 이미 있다는 메시지를 표시합니다.

예제 3: ASCII 형식의 파일에 출력 보내기

이 예제에서는 특정 인코딩 형식으로 출력을 인코딩하는 방법을 보여줍니다.

$Procs = Get-Process
Out-File -FilePath .\Process.txt -InputObject $Procs -Encoding ASCII -Width 50

cmdlet은 Get-Process 로컬 컴퓨터에서 실행되는 프로세스 목록을 가져옵니다. 프로세스 개체는 변수$Procs에 저장됩니다. Out-File에서는 FilePath 매개 변수를 사용하고 Process.txt이라는 현재 디렉터리에 파일을 만듭니다. InputObject 매개 변수는 프로세스 개체를 파일 Process.txt 전달합니다$Procs. 인코딩 매개 변수는 출력을 ASCII 형식으로 변환합니다. Width 매개 변수는 일부 데이터가 잘리도록 파일의 각 줄을 50자로 제한합니다.

예제 4: 공급자 사용 및 파일로 출력 보내기

이 예제에서는 FileSystem 공급자 드라이브에 없을 때 cmdlet을 사용하는 Out-File 방법을 보여 줍니다. cmdlet을 Get-PSProvider 사용하여 로컬 컴퓨터에서 공급자를 봅니다. 자세한 내용은 about_Providers 참조하세요.

PS> Set-Location -Path Alias:

PS> Get-Location

Path
----
Alias:\

PS> Get-ChildItem | Out-File -FilePath C:\TestDir\AliasNames.txt

PS> Get-Content -Path C:\TestDir\AliasNames.txt

CommandType     Name
-----------     ----
Alias           % -> ForEach-Object
Alias           ? -> Where-Object
Alias           ac -> Add-Content
Alias           cat -> Get-Content

Set-Location 명령은 Path 매개 변수를 사용하여 현재 위치를 레지스트리 공급자Alias:로 설정합니다. cmdlet은 Get-Location 에 대한 Alias:전체 경로를 표시합니다. Get-ChildItem 는 파이프라인 아래로 개체를 cmdlet으로 Out-File 보냅니다. Out-File 에서는 FilePath 매개 변수를 사용하여 출력 C:\TestDir\AliasNames.txt 전체 경로 및 파일 이름을 지정합니다. cmdlet은 Get-Content Path 매개 변수를 사용하고 PowerShell 콘솔에 파일의 콘텐츠를 표시합니다.

예제 5: 전체 범위에 대한 파일 출력 너비 설정

이 예제에서는 모든 호출 및 리디렉션 연산자(및)에 Out-File 대한 매개 변수를 2000으로 설정하는 Width 데 사용합니다$PSDefaultParameterValues.>>> 이렇게 하면 테이블 형식의 데이터를 파일로 출력하는 현재 범위 내의 모든 위치에서 PowerShell은 PowerShell 호스트의 콘솔 너비에 의해 결정되는 선 너비 대신 2000의 선 너비를 사용합니다.

function DemoDefaultOutFileWidth() {
    try {
        $PSDefaultParameterValues['out-file:width'] = 2000

        $logFile = "$pwd\logfile.txt"

        Get-ChildItem Env:\ > $logFile

        Get-Service -ErrorAction Ignore |
            Format-Table -AutoSize |
            Out-File $logFile -Append

        Get-Process | Format-Table Id,SI,Name,Path,MainWindowTitle >> $logFile
    }
    finally {
        $PSDefaultParameterValues.Remove('out-file:width')
    }
}

DemoDefaultOutFileWidth

자세한 $PSDefaultParameterValues내용은 about_Preference_Variables 참조하세요.

매개 변수

-Append

기존 파일의 끝에 출력을 추가합니다.

형식:SwitchParameter
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Confirm

cmdlet을 실행하기 전에 확인 메시지가 표시됩니다.

형식:SwitchParameter
별칭:cf
Position:Named
Default value:False
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용: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 형식으로 인코딩합니다.

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

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

참고 항목

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

형식:Encoding
허용되는 값:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:1
Default value:UTF8NoBOM
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-FilePath

출력 파일의 경로를 지정합니다.

형식:String
별칭:Path
Position:0
Default value:None
필수:True
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Force

읽기 전용 특성을 재정의하고 기존 읽기 전용 파일을 덮어씁니다. Force 매개 변수는 보안 제한을 재정의하지 않습니다.

형식:SwitchParameter
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-InputObject

파일에 쓸 개체를 지정합니다. 개체를 포함하는 변수를 입력하거나 개체를 가져오는 명령이나 식을 입력합니다.

형식:PSObject
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:True
와일드카드 문자 허용:False

-LiteralPath

출력 파일의 경로를 지정합니다. LiteralPath 매개 변수는 입력된 대로 정확하게 사용됩니다. 와일드카드 문자는 허용되지 않습니다. 경로에 이스케이프 문자가 포함된 경우 작은따옴표로 묶습니다. 작은따옴표는 PowerShell에 문자를 이스케이프 시퀀스로 해석하지 않도록 지시합니다. 자세한 내용은 about_Quoting_Rules 참조하세요.

형식:String
별칭:PSPath, LP
Position:Named
Default value:None
필수:True
파이프라인 입력 허용:True
와일드카드 문자 허용:False

-NoClobber

NoClobber 는 기존 파일을 덮어쓰지 못하게 하고 파일이 이미 있다는 메시지를 표시합니다. 기본적으로 지정된 경로 Out-File 에 파일이 있는 경우 경고 없이 파일을 덮어씁니다.

형식:SwitchParameter
별칭:NoOverwrite
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-NoNewline

파일에 기록된 콘텐츠가 줄 바꿈 문자로 끝나지 않도록 지정합니다. 입력 개체의 문자열 표현은 출력을 형성하기 위해 연결됩니다. 출력 문자열 사이에 공백이나 줄 바꿈이 삽입되지 않습니다. 마지막 출력 문자열 이후에 줄 바꿈이 추가되지 않습니다.

형식:SwitchParameter
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-WhatIf

cmdlet이 실행될 경우 결과 동작을 표시합니다. cmdlet은 실행되지 않습니다.

형식:SwitchParameter
별칭:wi
Position:Named
Default value:False
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Width

각 출력 줄의 최대 문자 수를 지정합니다. 이 문자보다 많으면 잘리거나 다음 줄로 넘어갑니다. 이 매개 변수를 사용하지 않으면 너비는 호스트의 특성에 따라 결정됩니다. PowerShell 콘솔의 기본값은 80자입니다. 리디렉션 연산자(>및 )의 모든 호출 Out-File 에 대한 너비를 제어하려면 사용 Out-File전에 설정합니다 $PSDefaultParameterValues['out-file:width'] = 2000 >>.

형식:Int32
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

입력

PSObject

모든 개체를 이 cmdlet으로 파이프할 수 있습니다.

출력

None

이 cmdlet은 출력을 반환하지 않습니다.

참고

입력 개체는 터미널에 있는 것처럼 자동으로 서식이 지정되지만 cmdlet을 Format-* 사용하여 파일에 대한 출력의 서식을 명시적으로 제어할 수 있습니다. 예를 들어 Get-Date | Format-List | Out-File out.txt

PowerShell 명령의 출력을 cmdlet으로 Out-File 보내려면 파이프라인을 사용합니다. 또는 변수에 데이터를 저장하고 InputObject 매개 변수를 사용하여 cmdlet에 Out-File 데이터를 전달할 수 있습니다.

Out-File 는 파일에 데이터를 저장하지만 파이프라인에 출력 개체를 생성하지는 않습니다.

PowerShell 7.2는 ANSI 이스케이프 시퀀스가 렌더링되는 방법을 제어하는 기능을 추가했습니다. 전달 Out-File 되는 ANSI 데코레이팅 출력은 속성의 $PSStyle.OutputRendering 설정에 따라 변경할 수 있습니다. 자세한 내용은 about_ANSI_Terminals 참조하세요.