Set-Content
새 콘텐츠를 작성하거나 파일의 기존 콘텐츠를 대체합니다.
구문
Set-Content
[-Path] <string[]>
[-Value] <Object[]>
[-PassThru]
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Force]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[-NoNewline]
[-Encoding <Encoding>]
[-AsByteStream]
[-Stream <string>]
[<CommonParameters>]
Set-Content
[-Value] <Object[]>
-LiteralPath <string[]>
[-PassThru]
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Force]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[-NoNewline]
[-Encoding <Encoding>]
[-AsByteStream]
[-Stream <string>]
[<CommonParameters>]
Set-Content
[-Path] <string[]>
[-Value] <Object[]>
[-PassThru]
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Force]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Set-Content
[-Value] <Object[]>
-LiteralPath <string[]>
[-PassThru]
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Force]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
Set-Content
는 새 콘텐츠를 쓰거나 파일의 콘텐츠를 대체하는 문자열 처리 cmdlet입니다. Set-Content
는 기존 콘텐츠를 대체하고 파일에 콘텐츠를 추가하는 cmdlet과 다릅니다 Add-Content
. 콘텐츠를 Set-Content
보내려면 명령줄에서 Value 매개 변수를 사용하거나 파이프라인을 통해 콘텐츠를 보낼 수 있습니다.
다음 예제에 대한 파일 또는 디렉터리를 만들어야 하는 경우 New-Item을 참조하세요.
예제
예제 1: 디렉터리에 있는 여러 파일의 내용 바꾸기
다음은 현재 디렉터리의 여러 파일에 대한 콘텐츠를 바꾸는 예제입니다.
Get-ChildItem -Path .\Test*.txt
Test1.txt
Test2.txt
Test3.txt
Set-Content -Path .\Test*.txt -Value 'Hello, World'
Get-Content -Path .\Test*.txt
Hello, World
Hello, World
Hello, World
cmdlet은 Get-ChildItem
Path 매개 변수를 사용하여 현재 디렉터리에서 시작하는 Test*
.txt 파일을 나열합니다. cmdlet은 Set-Content
Path 매개 변수를 사용하여 파일을 지정합니다Test*.txt
. Value 매개 변수는 각 파일의 기존 콘텐츠를 대체하는 텍스트 문자열 Hello, World를 제공합니다. cmdlet은 Get-Content
Path 매개 변수를 사용하여 파일을 지정 Test*.txt
하고 PowerShell 콘솔에 각 파일의 콘텐츠를 표시합니다.
예제 2: 새 파일 만들기 및 콘텐츠 작성
다음은 새 파일을 만들고 현재 날짜와 시간을 파일에 쓰는 예제입니다.
Set-Content -Path .\DateTime.txt -Value (Get-Date)
Get-Content -Path .\DateTime.txt
1/30/2019 09:55:08
Set-Content
에서는 Path 및 Value 매개 변수를 사용하여 현재 디렉터리에 DateTime.txt이라는 새 파일을 만듭니다. Value 매개 변수는 현재 날짜 및 시간을 가져오는 데 사용합니다Get-Date
.
Set-Content
는 DateTime 개체를 파일에 문자열로 씁니다. cmdlet은 Get-Content
Path 매개 변수를 사용하여 PowerShell 콘솔에 DateTime.txt 콘텐츠를 표시합니다.
예제 3: 파일의 텍스트 바꾸기
이 명령은 기존 파일 내의 모든 단어 인스턴스를 바꿉니다.
Get-Content -Path .\Notice.txt
Warning
Replace Warning with a new word.
The word Warning was replaced.
(Get-Content -Path .\Notice.txt) |
ForEach-Object {$_ -Replace 'Warning', 'Caution'} |
Set-Content -Path .\Notice.txt
Get-Content -Path .\Notice.txt
Caution
Replace Caution with a new word.
The word Caution was replaced.
cmdlet은 Get-Content
Path 매개 변수를 사용하여 현재 디렉터리에 Notice.txt 파일을 지정합니다. Get-Content
이 명령은 파이프라인을 보내기 전에 명령이 완료되도록 괄호로 래핑됩니다.
Notice.txt 파일의 내용은 파이프라인을 cmdlet으로 ForEach-Object
보냅니다.
ForEach-Object
는 자동 변수 $_
를 사용하고 경고가 발생할 때마다 주의해서 바꿉니다. 개체는 파이프라인 아래로 cmdlet으로 Set-Content
전송됩니다. Set-Content
에서는 Path 매개 변수를 사용하여 Notice.txt 파일을 지정하고 업데이트된 콘텐츠를 파일에 씁니다.
마지막 Get-Content
cmdlet은 PowerShell 콘솔에 업데이트된 파일 콘텐츠를 표시합니다.
예제 4: Set-Content에서 필터 사용
cmdlet에 대한 필터를 Set-Content
지정할 수 있습니다. 필터를 사용하여 Path 매개 변수를 한정하는 경우 경로의 내용을 나타내기 위해 후행 별표(*
)를 포함해야 합니다.
다음 명령은 디렉터리의 모든 *.txt
파일을 C:\Temp
빈 값으로 설정합니다.
Set-Content -Path C:\Temp\* -Filter *.txt -Value "Empty"
매개 변수
-AsByteStream
FileSystem 공급자가 사용할 수 있는 동적 매개 변수입니다. 자세한 내용은 about_FileSystem_Provider 참조하세요.
콘텐츠를 바이트 스트림으로 작성되도록 지정합니다. 이 매개 변수는 PowerShell 6.0에서 도입되었습니다.
Encoding 매개 변수와 함께 AsByteStream 매개 변수를 사용할 때 경고가 발생합니다. AsByteStream 매개 변수는 인코딩을 무시하고 출력은 바이트 스트림으로 작성됩니다.
형식: | SwitchParameter |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Confirm
cmdlet을 실행하기 전에 확인 메시지가 표시됩니다.
형식: | SwitchParameter |
별칭: | cf |
Position: | Named |
Default value: | False |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Credential
참고 항목
이 매개 변수는 PowerShell과 함께 설치된 공급자에서 지원되지 않습니다. 다른 사용자를 가장하거나 이 cmdlet을 실행할 때 자격 증명을 높이려면 Invoke-Command를 사용합니다.
형식: | PSCredential |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | False |
-Encoding
FileSystem 공급자가 사용할 수 있는 동적 매개 변수입니다. 자세한 내용은 about_FileSystem_Provider 참조하세요.
대상 파일의 인코딩 형식을 지정합니다. 기본값은 utf8NoBOM
입니다.
인코딩은 FileSystem 공급자가 추가하는 Set-Content
동적 매개 변수입니다. 이 매개 변수는 파일 시스템 드라이브에서만 작동합니다.
이 매개 변수에 허용되는 값은 다음과 같습니다.
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: | Named |
Default value: | utf8NoBOM |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Exclude
문자열 배열로 이 cmdlet이 작업에서 제외하는 항목 또는 항목을 지정합니다. 이 매개 변수의 값은 Path 매개 변수를 한정합니다. 경로 요소 또는 패턴(예: *.txt
.)을 입력합니다. 와일드카드 문자를 사용할 수 있습니다. Exclude 매개 변수는 와일드카드 문자가 디렉터리의 내용을 지정하는 항목의 내용(예: C:\Windows\*
명령)이 포함된 경우에만 유효합니다C:\Windows
.
형식: | String[] |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | True |
-Filter
Path 매개 변수를 한정할 필터를 지정합니다. FileSystem 공급자는 필터 사용을 지원하는 유일한 설치된 PowerShell 공급자입니다. fileSystem 필터 언어에 대한 구문은 about_Wildcards 찾을 수 있습니다. 필터는 검색된 후 PowerShell이 개체를 필터링하지 않고 cmdlet이 개체를 가져올 때 공급자가 적용하기 때문에 다른 매개 변수보다 더 효율적입니다.
형식: | String |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | True |
-Force
파일이 읽기 전용인 경우에도 cmdlet이 파일의 내용을 설정하도록 합니다. 구현은 공급자마다 다릅니다. 자세한 내용은 about_Providers 참조하세요. Force 매개 변수는 보안 제한을 재정의하지 않습니다.
형식: | SwitchParameter |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Include
문자열 배열로 이 cmdlet이 작업에 포함하는 항목 또는 항목을 지정합니다. 이 매개 변수의 값은 Path 매개 변수를 한정합니다. 경로 요소 또는 패턴(예: "*.txt"
.)을 입력합니다. 와일드카드 문자를 사용할 수 있습니다. Include 매개 변수는 명령에 와일드카드 문자가 디렉터리의 내용을 지정하는 항목의 내용(예: C:\Windows\*
포함)을 C:\Windows
포함하는 경우에만 유효합니다.
형식: | String[] |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | True |
-LiteralPath
하나 이상의 위치에 대한 경로를 지정합니다. LiteralPath의 값은 입력된 대로 정확하게 사용됩니다. 와일드카드로 해석되는 문자는 없습니다. 경로에 이스케이프 문자가 포함된 경우 작은따옴표로 묶습니다. 작은따옴표는 PowerShell에 문자를 이스케이프 시퀀스로 해석하지 않도록 지시합니다.
자세한 내용은 about_Quoting_Rules 참조하세요.
형식: | String[] |
별칭: | PSPath, LP |
Position: | Named |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | False |
-NoNewline
FileSystem 공급자가 사용할 수 있는 동적 매개 변수입니다. 자세한 내용은 about_FileSystem_Provider 참조하세요.
입력 개체의 문자열 표현은 출력을 형성하기 위해 연결됩니다. 출력 문자열 사이에 공백이나 줄 바꿈이 삽입되지 않습니다. 마지막 출력 문자열 이후에 줄 바꿈이 추가되지 않습니다.
형식: | SwitchParameter |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-PassThru
콘텐츠를 나타내는 개체를 반환합니다. 기본적으로 이 cmdlet은 출력을 생성하지 않습니다.
형식: | SwitchParameter |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Path
콘텐츠를 받는 항목의 경로를 지정합니다. 와일드카드 문자를 사용할 수 있습니다.
형식: | String[] |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | True |
-Stream
FileSystem 공급자가 사용할 수 있는 동적 매개 변수입니다. 이 매개 변수는 Windows에서만 사용할 수 있습니다. 자세한 내용은 about_FileSystem_Provider 참조하세요.
콘텐츠에 대한 대체 데이터 스트림을 지정합니다. 스트림이 없으면 이 cmdlet이 만듭니다. 와일드카드 문자는 지원되지 않습니다.
Stream은 FileSystem 공급자가 추가하는 Set-Content
동적 매개 변수입니다. 이 매개 변수는 파일 시스템 드라이브에서만 작동합니다.
cmdlet을 Set-Content
사용하여 다음과 같은 Zone.Identifier
대체 데이터 스트림의 콘텐츠를 만들거나 업데이트할 수 있습니다. 그러나 인터넷에서 다운로드되는 파일을 차단하는 보안 검사를 제거하는 방법으로 권장하지 않습니다. 다운로드한 파일이 안전한지 확인하는 경우 cmdlet을 Unblock-File
사용합니다.
이 매개 변수는 PowerShell 3.0에서 도입되었습니다. PowerShell 7.2 Set-Content
부터 디렉터리 및 파일에서 대체 데이터 스트림의 콘텐츠를 설정할 수 있습니다.
형식: | String |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Value
항목의 새 콘텐츠를 지정합니다.
형식: | Object[] |
Position: | 1 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | False |
-WhatIf
cmdlet이 실행될 경우 결과 동작을 표시합니다. cmdlet이 실행되지 않습니다.
형식: | SwitchParameter |
별칭: | wi |
Position: | Named |
Default value: | False |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
입력
항목의 새 값이 포함된 개체를 이 cmdlet으로 파이프할 수 있습니다.
출력
None
기본적으로 이 cmdlet은 출력을 반환하지 않습니다.
PassThru 매개 변수를 사용하는 경우 이 cmdlet은 콘텐츠를 나타내는 문자열을 반환합니다.
참고
Set-Content
는 문자열 처리를 위해 설계되었습니다. 문자열이 아닌 개체를 파이프하는Set-Content
경우 개체를 쓰기 전에 문자열로 변환합니다. 파일에 개체를 쓰려면 .를 사용합니다Out-File
.- cmdlet
Set-Content
은 모든 공급자가 노출하는 데이터와 함께 작동하도록 설계되었습니다. 세션에서 사용할 수 있는 공급자를 나열하려면 .를 입력Get-PsProvider
합니다. 자세한 내용은 about_Providers 참조하세요.
관련 링크
PowerShell