Set-Content

항목의 내용을 쓰거나 새 내용으로 바꿉니다.

구문

Set-Content [-LiteralPath] <string[]> [-Value] <Object[]> [-Credential <PSCredential>] [-Exclude <string[]>] [-Filter <string>] [-Force] [-Include <string[]>] [-PassThru] [-Confirm] [-WhatIf] [-UseTransaction] [<CommonParameters>]

Set-Content [-Path] <string[]> [-Value] <Object[]> [-Credential <PSCredential>] [-Exclude <string[]>] [-Filter <string>] [-Force] [-Include <string[]>] [-PassThru] [-Confirm] [-WhatIf] [-UseTransaction] [<CommonParameters>]

설명

Set-Content cmdlet은 파일 같은 지정된 항목의 내용을 쓰거나 바꾸는 문자열 처리 cmdlet입니다. Add-Content cmdlet은 파일에 내용을 추가하는 반면, Set-Content는 기존 내용을 바꿉니다. 명령에 내용을 입력하거나 파이프라인을 통해 내용을 Set-Content로 보낼 수 있습니다.

매개 변수

-Credential <PSCredential>

이 작업을 수행할 수 있는 권한을 가진 사용자 계정을 지정합니다. 기본값은 현재 사용자입니다.

"User01" 또는 "Domain01\User01"과 같은 사용자 이름을 입력하거나 Get-Credential cmdlet에 의해 생성된 것과 같은 PSCredential 개체를 입력합니다. 사용자 이름을 입력하면 암호를 묻는 메시지가 표시됩니다.

이 매개 변수는 Windows PowerShell과 함께 설치된 어떤 공급자에서도 지원되지 않습니다.

필수 여부

false

위치

named

기본값

파이프라인 입력 적용 여부

true (ByPropertyName)

와일드카드 문자 적용 여부

false

-Exclude <string[]>

지정된 항목을 생략합니다. 이 매개 변수의 값은 Path 매개 변수를 한정합니다. 경로 요소 또는 패턴(예: "*.txt")을 입력하십시오. 와일드카드를 사용할 수 있습니다.

필수 여부

false

위치

named

기본값

파이프라인 입력 적용 여부

false

와일드카드 문자 적용 여부

false

-Filter <string>

공급자의 형식 또는 언어에 필터를 지정합니다. 이 매개 변수의 값은 Path 매개 변수를 한정합니다. 와일드카드 사용을 포함하여 필터의 구문은 공급자에 따라 다릅니다. 공급자는 개체를 검색한 후에 Windows PowerShell을 통해 해당 개체를 필터링하는 대신 개체를 검색할 때 필터를 적용하기 때문에 필터는 다른 매개 변수보다 훨씬 효율적입니다.

필수 여부

false

위치

named

기본값

파이프라인 입력 적용 여부

false

와일드카드 문자 적용 여부

false

-Force

파일이 읽기 전용인 경우에도 cmdlet이 파일 내용을 설정할 수 있도록 합니다. 구현은 공급자마다 다릅니다. 자세한 내용은 about_Providers를 참조하십시오. Force 매개 변수를 사용해도 cmdlet은 보안 제한을 재정의할 수 없습니다.

필수 여부

false

위치

named

기본값

파이프라인 입력 적용 여부

false

와일드카드 문자 적용 여부

false

-Include <string[]>

지정된 항목만 변경합니다. 이 매개 변수의 값은 Path 매개 변수를 한정합니다. 경로 요소 또는 패턴(예: "*.txt")을 입력하십시오. 와일드카드를 사용할 수 있습니다.

필수 여부

false

위치

named

기본값

파이프라인 입력 적용 여부

false

와일드카드 문자 적용 여부

false

-LiteralPath <string[]>

내용을 받을 항목의 경로를 지정합니다. Path와 달리 LiteralPath 값은 입력한 그대로 사용됩니다. 와일드카드로 해석되는 문자는 없습니다. 경로에 이스케이프 문자가 포함된 경우 경로를 작은따옴표로 묶어야 합니다. 작은따옴표는 Windows PowerShell이 어떤 문자도 이스케이프 시퀀스로 해석하지 않도록 지시합니다.

필수 여부

true

위치

1

기본값

파이프라인 입력 적용 여부

true (ByPropertyName)

와일드카드 문자 적용 여부

false

-PassThru

내용을 나타내는 개체를 반환합니다. 기본적으로 이 cmdlet에서는 출력을 생성하지 않습니다.

필수 여부

false

위치

named

기본값

파이프라인 입력 적용 여부

false

와일드카드 문자 적용 여부

false

-Path <string[]>

내용을 받을 항목의 경로를 지정합니다. 와일드카드를 사용할 수 있습니다.

필수 여부

true

위치

1

기본값

파이프라인 입력 적용 여부

true (ByPropertyName)

와일드카드 문자 적용 여부

false

-Value <Object[]>

항목의 새 내용을 지정합니다.

필수 여부

true

위치

2

기본값

파이프라인 입력 적용 여부

true (ByValue, ByPropertyName)

와일드카드 문자 적용 여부

false

-Confirm

명령을 실행하기 전에 확인 메시지를 표시합니다.

필수 여부

false

위치

named

기본값

파이프라인 입력 적용 여부

false

와일드카드 문자 적용 여부

false

-WhatIf

명령을 실제로 실행하지 않고도 명령이 실행될 경우 발생할 수 있는 현상을 설명합니다.

필수 여부

false

위치

named

기본값

파이프라인 입력 적용 여부

false

와일드카드 문자 적용 여부

false

-UseTransaction

명령을 활성 트랜잭션에 포함합니다. 이 매개 변수는 트랜잭션이 진행 중인 경우에만 유효합니다. 자세한 내용은 about_Transactions를 참조하십시오.

필수 여부

false

위치

named

기본값

파이프라인 입력 적용 여부

false

와일드카드 문자 적용 여부

false

<CommonParameters>

이 cmdlet은 -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer, -OutVariable 등의 일반 매개 변수를 지원합니다. 자세한 내용은 about_commonparameters.

입력 및 출력

입력 유형은 cmdlet으로 파이프할 수 있는 개체의 유형입니다. 반환 유형은 cmdlet에서 반환되는 개체의 유형입니다.

입력

System.Object

항목의 새 값을 포함하는 개체를 Set-Content로 파이프할 수 있습니다.

출력

없음 또는 System.String

Passthru 매개 변수를 사용하는 경우 Set-Content는 내용을 나타내는 System.String 개체를 생성합니다. 그렇지 않으면 아무 출력도 생성하지 않습니다.

참고

또한 해당 기본 제공 별칭("sc")으로 Set-Content를 참조할 수 있습니다. 자세한 내용은 about_Aliases를 참조하십시오.

Set-Content는 문자열을 처리하도록 디자인되었습니다. 따라서 문자열이 아닌 개체를 Set-Content로 전달하면 개체를 쓰기 전에 문자열로 변환합니다. 개체를 파일에 쓰려면 Out-File을 사용합니다.

Set-Content cmdlet은 모든 공급자가 제공하는 데이터에 사용할 수 있습니다. 세션에서 사용할 수 있는 공급자를 나열하려면 "Get-PsProvider"를 입력합니다. 자세한 내용은 about_Providers를 참조하십시오.

예 1

C:\PS>set-content -path C:\Test1\test*.txt -value "Hello, World"

설명
-----------
이 명령은 Test1 디렉터리에서 이름이 "test"로 시작하는 모든 파일의 내용을 "Hello, World"로 바꿉니다. 이 예에서는 명령에 직접 입력하여 내용을 지정하는 방법을 보여 줍니다.





예 2

C:\PS>get-date | set-content C:\Test1\date.csv

설명
-----------
이 명령은 현재 날짜 및 시간만 포함하는 쉼표로 구분된 가변 길이(csv) 파일을 만듭니다. 먼저 Get-Date cmdlet을 사용하여 현재 시스템 날짜 및 시간을 가져옵니다. 파이프라인 연산자는 Set-Content로 결과를 보냅니다. Set-Content는 파일을 만들고 내용을 기록합니다.

Test1 디렉터리가 없으면 명령을 실행할 수 없지만 파일이 없는 경우에는 명령에서 자동으로 해당 파일을 만듭니다.





예 3

C:\PS>(get-content Notice.txt) | foreach-object {$_ -replace "Warning", "Caution"} | set-content Notice.txt

설명
-----------
이 명령은 Notice.txt 파일에서 "Warning"의 모든 인스턴스를 "Caution"으로 바꿉니다. 

먼저 Get-Content cmdlet을 사용하여 Notice.txt의 내용을 가져옵니다. 파이프라인 연산자는 ForEach-Object cmdlet으로 결과를 보냅니다. ForEach-Object cmdlet은 Get-Content 내용의 각 줄에 식을 적용합니다. 이 식은 현재 항목을 참조하는 "$_" 기호와 Replace 매개 변수를 사용하여 바꿀 텍스트를 지정합니다. 

다른 파이프라인 연산자는 변경된 내용을 Set-Content로 보냅니다. Set-Content는 Notice.txt의 텍스트를 새 내용으로 바꿉니다.

Get-Content 명령을 괄호로 묶으면 Get 작업이 완료된 다음 Set 작업이 시작됩니다. 그렇지 않으면 두 함수가 같은 파일에 액세스를 시도하기 때문에 명령이 실패합니다.





참고 항목

개념

about_providers
Add-Content
Get-Content
Clear-Content