Set-Content
Записывает новое содержимое или заменяет существующее содержимое в файле.
Синтаксис
Path (Default) - FileSystem provider
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>]
LiteralPath - FileSystem provider
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>]
Path (Default) - All providers
Set-Content
[-Path] <string[]>
[-Value] <Object[]>
[-PassThru]
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Force]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
LiteralPath - All providers
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, можно использовать параметр значение в командной строке или отправить содержимое через конвейер.
Если вам нужно создать файлы или каталоги для следующих примеров, см. 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
Командлет
Пример 2. Создание файла и запись содержимого
В этом примере создается новый файл и записывается текущая дата и время в файл.
Set-Content -Path .\DateTime.txt -Value (Get-Date)
Get-Content -Path .\DateTime.txt
1/30/2019 09:55:08
Get-Date для получения текущей даты и времени.
Пример 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 упаковывается в скобки, чтобы команда завершилась до отправки по конвейеру.
Содержимое файла Notice.txt отправляется в конвейер в командлет ForEach-Object.
ForEach-Object использует автоматическую переменную $_ и заменяет каждое вхождение предупреждение на предупреждение. Объекты отправляются по конвейеру в командлет Set-Content.
Последний командлет Get-Content отображает обновленное содержимое файла в консоли PowerShell.
Пример 4. Использование фильтров с Set-Content
Фильтр можно указать в командлете Set-Content. При использовании фильтров для указания параметра пути необходимо добавить конечную звездочку (*), чтобы указать содержимое пути.
Следующая команда задает содержимое всех файлов
Set-Content -Path C:\Temp\* -Filter *.txt -Value "Empty"
Параметры
-AsByteStream
Это динамический параметр, доступный поставщиком файловой системы
Указывает, что содержимое должно быть записано в виде потока байтов. Этот параметр появился в PowerShell 6.0.
Предупреждение возникает при использовании параметра AsByteStream с параметром Encoding. Параметр AsByteStream игнорирует любую кодировку, а выходные данные записываются в виде потока байтов.
Свойства параметров
| Тип: | SwitchParameter |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
(All)
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-Confirm
Запрашивает подтверждение перед запуском cmdlet.
Свойства параметров
| Тип: | SwitchParameter |
| Default value: | False |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
| Aliases: | cf |
Наборы параметров
(All)
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-Credential
Замечание
Этот параметр не поддерживается поставщиками, установленными с помощью PowerShell. Чтобы олицетворить другого пользователя или повысить свои учетные данные при выполнении этого командлета, используйте Invoke-Command.
Свойства параметров
| Тип: | PSCredential |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
(All)
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | True |
| Значение из оставшихся аргументов: | False |
-Encoding
Это динамический параметр, доступный поставщиком файловой системы
Указывает тип кодирования для целевого файла. Значение по умолчанию — utf8NoBOM.
Кодировка — это динамический параметр, который поставщик FileSystem добавляет в 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 с пометкой порядка байтов (Byte Order Mark, BOM) -
utf8NoBOM: Кодирует в формате UTF-8 без метки порядка байтов (BOM) -
utf32: кодирует в формате UTF-32.
Начиная с PowerShell 6.2, параметр кодировки
Начиная с PowerShell 7.4, можно использовать значение Ansi для параметра кодировки, чтобы передать числовой идентификатор ANSI-страницы текущей культуры, не указывая его вручную.
Замечание
UTF-7* больше не рекомендуется использовать. Начиная с версии PowerShell 7.1, выводится предупреждение, если задать utf7 как параметр кодировки.
Свойства параметров
| Тип: | Encoding |
| Default value: | utf8NoBOM |
| Допустимые значения: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
(All)
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-Exclude
Указывает как строковый массив, элемент или элементы, которые этот командлет исключает в операции. Значение этого параметра квалифифициирует параметр Path. Введите элемент пути или шаблон, например *.txt. Разрешено использование подстановочных символов. Параметр Исключить действует только в том случае, если команда включает содержимое элемента, например C:\Windows\*, где подстановочный знак указывает содержимое каталога C:\Windows.
Свойства параметров
| Тип: | String[] |
| Default value: | None |
| Поддерживаются подстановочные знаки: | True |
| DontShow: | False |
Наборы параметров
(All)
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-Filter
Указывает фильтр для квалификации параметра Path. Поставщик файловой системы является единственным установленным поставщиком PowerShell, который поддерживает использование фильтров. Синтаксис языка фильтрации файловой системы вы можете найти в about_Wildcards. Фильтры более эффективны, чем другие параметры, так как поставщик применяет их, когда командлет получает объекты, а не чтобы PowerShell фильтровал объекты после их получения.
Свойства параметров
| Тип: | String |
| Default value: | None |
| Поддерживаются подстановочные знаки: | True |
| DontShow: | False |
Наборы параметров
(All)
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-Force
Позволяет командлету задать содержимое файла, даже если файл доступен только для чтения. Реализация зависит от поставщика к поставщику. Дополнительные сведения см. в разделе о поставщиках. Параметр force
Свойства параметров
| Тип: | SwitchParameter |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
(All)
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-Include
Указывает, как строковый массив, элемент или элементы, которые этот командлет включает в операцию. Значение этого параметра квалифифициирует параметр Path. Введите элемент пути или шаблон, например "*.txt". Разрешено использование подстановочных символов. Параметр Include действует только в том случае, если команда включает содержимое элемента, например C:\Windows\*, где подстановочный знак указывает содержимое каталога C:\Windows.
Свойства параметров
| Тип: | String[] |
| Default value: | None |
| Поддерживаются подстановочные знаки: | True |
| DontShow: | False |
Наборы параметров
(All)
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-LiteralPath
Указывает путь к одному или нескольким расположениям. Значение LiteralPath используется именно так, как оно введено. Никакие символы не интерпретируются как подстановочные знаки. Если путь содержит escape-символы, заключите его в одинарные кавычки. Одинарные кавычки указывают PowerShell на то, что не следует интерпретировать какие-либо символы как управляющие последовательности.
Дополнительную информацию см. в разделе about_Quoting_Rules.
Свойства параметров
| Тип: | String[] |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
| Aliases: | PSPath, LP |
Наборы параметров
LiteralPath
| Position: | Named |
| Обязательно: | True |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | True |
| Значение из оставшихся аргументов: | False |
-NoNewline
Это динамический параметр, доступный поставщиком файловой системы
Строковые представления входных объектов объединяются для формирования выходных данных. Пробелы или новые строки не вставляются между выходными строками. Новая строка не добавляется после последней выходной строки.
Свойства параметров
| Тип: | SwitchParameter |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
(All)
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-PassThru
Возвращает объект, представляющий содержимое. По умолчанию этот командлет не создает выходные данные.
Свойства параметров
| Тип: | SwitchParameter |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
(All)
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-Path
Указывает путь к элементу, который получает содержимое. Разрешено использование подстановочных символов.
Свойства параметров
| Тип: | String[] |
| Default value: | None |
| Поддерживаются подстановочные знаки: | True |
| DontShow: | False |
Наборы параметров
Path
| Position: | 0 |
| Обязательно: | True |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | True |
| Значение из оставшихся аргументов: | False |
-Stream
Это динамический параметр, доступный поставщиком файловой системы
Задает альтернативный поток данных для содержимого. Если поток не существует, этот командлет создает его. Подстановочные знаки не поддерживаются.
Командлет Set-Content можно использовать для создания или обновления содержимого любого альтернативного потока данных, например Zone.Identifier. Однако это не рекомендуется для устранения проверок безопасности, которые блокируют файлы, скачанные из Интернета. Если убедиться, что скачанный файл является безопасным, используйте командлет Unblock-File.
Этот параметр появился в PowerShell 3.0. По состоянию на PowerShell 7.2 Set-Content может задать содержимое альтернативных потоков данных из каталогов, а также файлов.
Свойства параметров
| Тип: | String |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
(All)
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-Value
Указывает новое содержимое элемента.
Свойства параметров
| Тип: | Object[] |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
(All)
| Position: | 1 |
| Обязательно: | True |
| Значение из конвейера: | True |
| Значение из конвейера по имени свойства: | True |
| Значение из оставшихся аргументов: | False |
-WhatIf
Показывает, что произойдет, если командлет будет запущен. Командлет не запускается.
Свойства параметров
| Тип: | SwitchParameter |
| Default value: | False |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
| Aliases: | wi |
Наборы параметров
(All)
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
CommonParameters
Этот командлет поддерживает общие параметры: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction и -WarningVariable. Дополнительные сведения см. в разделе about_CommonParameters.
Входные данные
Object
Объект, содержащий новое значение для элемента, можно передать в этот командлет.
Выходные данные
None
По умолчанию этот командлет не возвращает выходные данные.
String
При использовании параметра PassThru этот командлет возвращает строку, представляющую содержимое.
Примечания
-
Set-Contentпредназначен для обработки строк. Если объекты, не являющиеся строковыми, передаются вSet-Content, он преобразует объект в строку перед записью. Чтобы записать объекты в файлы, используйтеOut-File. - Командлет
Set-Contentпредназначен для работы с данными, предоставляемыми любым провайдером. Чтобы вывести список поставщиков, доступных в сеансе, введитеGet-PSProvider. Дополнительные сведения см. в разделе о поставщиках.