Поиск по сайту:

Set-Content (Microsoft.PowerShell.Management)


Set-Content

Модуль:
Microsoft.PowerShell.Management

Записывает новое содержимое или заменяет существующее содержимое в файле.

Синтаксис

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>]

Описание

Set-Content — это командлет для обработки строк, который записывает новое содержимое или заменяет содержимое в файле. Set-Content заменяет существующее содержимое и отличается от командлета 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

Командлет Get-ChildItem использует параметр Path для вывода списка файлов .txt, которые начинаются с Test* в текущем каталог. Командлет Set-Content использует параметр Path для указания файлов Test*.txt. Параметр Value предоставляет текстовую строку Hello, World, которая заменяет существующее содержимое в каждом файле. Командлет 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 в файл в виде строки. Командлет Get-Content использует параметр Path для отображения содержимого DateTime.txt в консоли PowerShell.

Пример 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.

Командлет Get-Content использует параметр Path для указания файла Notice.txt в текущем каталоге. Команда Get-Content заключена в круглые скобки, чтобы команда завершилась перед отправкой по конвейеру.

Содержимое файла Notice.txt передается по конвейеру командлету ForEach-Object. ForEach-Object использует автоматическую переменную $_ и заменяет каждое появление Предупреждения на Внимание. Объекты передаются по конвейеру в командлет Set-Content. Set-Content использует параметр Path для указания файла Notice.txt и записывает обновленное содержимое в файл.

Последний командлет Get-Content отображает обновленное содержимое файла в консоли PowerShell.

Пример 4. Использование фильтров с Set-Content

Вы можете указать фильтр для командлета Set-Content. При использовании фильтров для уточнения параметра Путь необходимо добавить завершающую звездочку (*), чтобы указать содержимое пути.

Следующая команда устанавливает для содержимого всех файлов *.txt в каталоге C:\Temp пустое значение Value.

Set-Content -Path C:\Temp\* -Filter *.txt -Value "Empty"

Параметры

-AsByteStream

Это динамический параметр, предоставляемый поставщиком FileSystem. Дополнительные сведения см. в разделе about_FileSystem_Provider.

Указывает, что содержимое должно быть записано в виде потока байтов. Этот параметр был введен в PowerShell 6.0.

Предупреждение выдается при использовании параметра AsByteStream с параметром Encoding. Параметр AsByteStream игнорирует любую кодировку, и выходные данные записываются в виде потока байтов.

Тип :

SwitchParameter

Позиция:

Именованный

Значение по умолчанию:

None

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-Confirm

Запрашивает подтверждение перед запуском командлета.

Тип :

SwitchParameter

Псевдонимы:

cf

Позиция:

Именованный

Значение по умолчанию:

False

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-Credential

Примечание

Этот параметр не поддерживается никакими поставщиками, установленными с помощью PowerShell. Чтобы выдать себя за другого пользователя или повысить свои учетные данные при запуске этого командлета, используйте Invoke-Command.

Тип :

PSCredential

Позиция:

Именованный

Значение по умолчанию:

None

Необходимый:

False

Примите ввод конвейера:

True

Принимайте подстановочные знаки:

False

-Encoding

Это динамический параметр, предоставляемый поставщиком FileSystem. Дополнительные сведения см. в разделе about_FileSystem_Provider.

Указывает тип кодировки целевого файла. Значение по умолчанию — utf8NoBOM.

Кодировка — это динамический параметр, который поставщик файловой системы добавляет в Set-Content. Этот параметр работает только на дисках с файловой системой.

Допустимые значения этого параметра следующие:

  • ascii: использует кодировку набора символов ASCII (7-бит).
  • ansi: использует кодировку для кодовой страницы ANSI текущего языка и региональных параметров. Эта опция была добавлена в PowerShell 7.4.
  • bigendianunicode: кодирует в формате UTF-16 с использованием обратного порядка байтов.
  • bigendianutf32: кодирует в формате UTF-32, используя обратный порядок байтов.
  • oem: использует кодировку по умолчанию для MS-DOS и консольных программ.
  • unicode: кодирует в формате UTF-16 с прямым порядком байтов.
  • utf7: кодирует в формате UTF-7.
  • utf8: кодирует в формате UTF-8.
  • utf8BOM: кодирует в формате UTF-8 с меткой порядка байтов (BOM).
  • utf8NoBOM: кодирует в формате UTF-8 без метки порядка байтов (BOM).
  • utf32: кодирует в формате UTF-32.

Начиная с PowerShell 6.2, параметр Encoding также позволяет использовать числовые идентификаторы зарегистрированных кодовых страниц (например, -Encoding 1251) или строковые имена зарегистрированных кодовых страниц (например, -Encoding). "windows-1251"). Дополнительные сведения см. в документации .NET для Encoding.CodePage.

Начиная с PowerShell 7.4, вы можете использовать значение Ansi для параметра Encoding, чтобы передать числовой идентификатор для текущей кодовой страницы ANSI языка и региональных параметров без необходимости указывать его вручную.

Примечание

UTF-7* больше не рекомендуется использовать. Начиная с PowerShell 7.1, предупреждение выводится, если вы укажете utf7 для параметра Кодировка.

Тип :

Кодирование

Принятые значения:

ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32

Позиция:

Именованный

Значение по умолчанию:

utf8NoBOM

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-Exclude

Указывает в виде массива строк элемент или элементы, которые этот командлет исключает из операции. Значение этого параметра определяет параметр Path. Введите элемент пути или шаблон, например *.txt. Допускаются подстановочные знаки. Параметр Exclude действует только в том случае, если команда включает содержимое элемента, например C:\Windows\*, где подстановочный знак указывает содержимое C:\Windows.

Тип :

String[]

Позиция:

Именованный

Значение по умолчанию:

None

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

True

-Filter

Указывает фильтр для уточнения параметра Path. Поставщик FileSystem — единственный установленный поставщик PowerShell, поддерживающий использование фильтров. Синтаксис языка фильтров FileSystem можно найти в about_Wildcards. Фильтры более эффективны, чем другие параметры, поскольку поставщик применяет их, когда командлет получает объекты, а не заставляет PowerShell фильтровать объекты после их получения.

Тип :

String

Позиция:

Именованный

Значение по умолчанию:

None

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

True

-Force

Заставляет командлет установить содержимое файла, даже если файл доступен только для чтения. Реализация варьируется от провайдера к провайдеру. Дополнительные сведения см. в разделе about_Providers. Параметр Force не отменяет ограничения безопасности.

Тип :

SwitchParameter

Позиция:

Именованный

Значение по умолчанию:

None

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-Include

Указывает в виде массива строк элемент или элементы, которые этот командлет включает в операцию. Значение этого параметра определяет параметр Path. Введите элемент пути или шаблон, например "*.txt". Допускаются подстановочные знаки. Параметр Include действует только в том случае, если команда включает содержимое элемента, например C:\Windows\*, где подстановочный знак указывает содержимое C:\Windows.

Тип :

String[]

Позиция:

Именованный

Значение по умолчанию:

None

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

True

-LiteralPath

Указывает путь к одному или нескольким местоположениям. Значение LiteralPath используется точно так, как оно введено. Никакие символы не интерпретируются как подстановочные знаки. Если путь содержит escape-символы, заключите его в одинарные кавычки. Одинарные кавычки сообщают PowerShell не интерпретировать никакие символы как escape-последовательности.

Дополнительные сведения см. в разделе about_Quoting_Rules.

Тип :

String[]

Псевдонимы:

PSPath, LP

Позиция:

Именованный

Значение по умолчанию:

None

Необходимый:

True

Примите ввод конвейера:

True

Принимайте подстановочные знаки:

False

-NoNewline

Это динамический параметр, предоставляемый поставщиком FileSystem. Дополнительные сведения см. в разделе about_FileSystem_Provider.

Строковые представления входных объектов объединяются для формирования выходных данных. Между выходными строками не вставляются пробелы или символы новой строки. После последней выходной строки новая строка не добавляется.

Тип :

SwitchParameter

Позиция:

Именованный

Значение по умолчанию:

None

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-PassThru

Возвращает объект, представляющий содержимое. По умолчанию этот командлет не генерирует никаких выходных данных.

Тип :

SwitchParameter

Позиция:

Именованный

Значение по умолчанию:

None

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-Path

Указывает путь к элементу, который получает содержимое. Допускаются подстановочные знаки.

Тип :

String[]

Позиция:

0

Значение по умолчанию:

None

Необходимый:

True

Примите ввод конвейера:

True

Принимайте подстановочные знаки:

True

-Stream

Это динамический параметр, предоставляемый поставщиком FileSystem. Этот параметр доступен только в Windows. Дополнительные сведения см. в разделе about_FileSystem_Provider.

Указывает альтернативный поток данных для контента. Если поток не существует, этот командлет создает его. Подстановочные знаки не поддерживаются.

Stream — это динамический параметр, который поставщик FileSystem добавляет в Set-Content. Этот параметр работает только на дисках с файловой системой.

Вы можете использовать командлет Set-Content для создания или обновления содержимого любого альтернативного потока данных, например Zone.Identifier. Однако мы не рекомендуем это как способ избежать проверок безопасности, блокирующих файлы, загружаемые из Интернета. Если вы убедитесь, что загруженный файл безопасен, используйте командлет Unblock-File.

Этот параметр был введен в PowerShell 3.0. Начиная с PowerShell 7.2, Set-Content может устанавливать содержимое альтернативных потоков данных как из каталогов, так и из файлов.

Тип :

String

Позиция:

Именованный

Значение по умолчанию:

None

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-Value

Указывает новое содержимое элемента.

Тип :

Object[]

Позиция:

1

Значение по умолчанию:

None

Необходимый:

True

Примите ввод конвейера:

True

Принимайте подстановочные знаки:

False

-WhatIf

Показывает, что произойдет, если командлет запустится. Командлет не запускается.

Тип :

SwitchParameter

Псевдонимы:

wi

Позиция:

Именованный

Значение по умолчанию:

False

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

Входы

Объект

В этот командлет можно передать объект, содержащий новое значение элемента.

Выходы

Нет

По умолчанию этот командлет не возвращает никаких результатов.

Строка

При использовании параметра PassThru этот командлет возвращает строку, представляющую содержимое.

Примечания

  • Set-Content предназначен для обработки строк. Если вы передаете нестроковые объекты в Set-Content, он преобразует объект в строку перед его записью. Чтобы записать объекты в файлы, используйте Out-File.
  • Командлет Set-Content предназначен для работы с данными, предоставляемыми любым поставщиком. Чтобы просмотреть список поставщиков, доступных в вашем сеансе, введите Get-PsProvider. Дополнительные сведения см. в разделе about_Providers.