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:08Set-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.