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>]
Описание
Set-Content
— командлет строковой обработки, который записывает новое содержимое или заменяет содержимое в файле. Set-Content
заменяет существующее содержимое и отличается от командлета Add-Content
, который добавляет содержимое в файл. Чтобы отправить содержимое Set-Content
, можно использовать параметр Value в командной строке или отправить содержимое через конвейер.
Если вам нужно создать файлы или каталоги для следующих примеров, см . раздел "Новый элемент".
Примеры
Пример 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
использует параметры пути и значения для создания нового файла с именем 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
можно указать фильтр. При использовании фильтров для квалификации параметра Path необходимо включить конечную звездочку (*
), чтобы указать содержимое пути.
Следующая команда задает содержимое всех *.txt
файлов в каталоге C:\Temp
пустым значением.
Set-Content -Path C:\Temp\* -Filter *.txt -Value "Empty"
Параметры
-AsByteStream
Это динамический параметр, доступный поставщиком FileSystem . Дополнительные сведения см. в about_FileSystem_Provider.
Указывает, что содержимое должно быть записано в виде потока байтов. Этот параметр появился в PowerShell 6.0.
Предупреждение возникает при использовании параметра AsByteStream с параметром кодировки. Параметр AsByteStream игнорирует любую кодировку и выходные данные записываются в виде потока байтов.
Тип: | SwitchParameter |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Confirm
Запрос подтверждения перед выполнением командлета.
Тип: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Credential
Примечание.
Этот параметр не поддерживается поставщиками, установленными с помощью PowerShell. Чтобы олицетворить другого пользователя или повысить свои учетные данные при выполнении этого командлета, используйте Invoke-Command.
Тип: | PSCredential |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-Encoding
Это динамический параметр, доступный поставщиком FileSystem . Дополнительные сведения см. в about_FileSystem_Provider.
Указывает тип кодировки для целевого файла. Значение по умолчанию — utf8NoBOM
.
Кодировка — это динамический параметр, в Set-Content
который добавляется поставщик FileSystem. Этот параметр работает только на дисках с файловой системой.
Допустимые значения для этого параметра приведены следующим образом:
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 "windows-1251"
-Encoding 1251
). Дополнительные сведения см. в документации по .NET для Encoding.CodePage.
Начиная с PowerShell 7.4, можно использовать Ansi
значение параметра кодировки для передачи числового идентификатора для кодовой страницы ANSI текущего языка и региональных параметров без необходимости указывать его вручную.
Примечание.
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
Указывает как строковый массив, элемент или элементы, которые этот командлет исключает в операции. Значение этого параметра определяет параметр Path. Введите элемент пути или шаблон, например *.txt
. Можно использовать подстановочные знаки. Параметр Exclude действует только в том случае, если команда включает содержимое элемента, напримерC:\Windows\*
, где подстановочный знак указывает содержимое C:\Windows
каталога.
Тип: | String[] |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | True |
-Filter
Указывает фильтр для квалификации параметра Path . Поставщик FileSystem — единственный установленный поставщик PowerShell, поддерживающий использование фильтров. Синтаксис языка фильтра FileSystem можно найти в about_Wildcards. Фильтры более эффективны, чем другие параметры, так как поставщик применяет их, когда командлет получает объекты, а не фильтрует объекты После их получения.
Тип: | String |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | True |
-Force
Позволяет командлету задать содержимое файла, даже если файл доступен только для чтения. Применение этого параметра зависит от конкретного поставщика. Дополнительные сведения см. в about_Providers. Параметр Force не переопределяет ограничения безопасности.
Тип: | SwitchParameter |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Include
Указывает, как строковый массив, элемент или элементы, которые этот командлет включает в операцию. Значение этого параметра определяет параметр Path. Введите элемент пути или шаблон, например "*.txt"
. Можно использовать подстановочные знаки. Параметр Include действует только в том случае, если команда содержит содержимое элемента, например C:\Windows\*
, где подстановочный знак указывает содержимое C:\Windows
каталога.
Тип: | String[] |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | True |
-LiteralPath
Указывает путь к одному или нескольким расположениям. Значение LiteralPath используется точно так же, как он типизированный. Никакие символы не интерпретируются как знаки подстановки. Если путь содержит escape-символы, заключите его в одинарные кавычки. Одинарные кавычки говорят PowerShell не интерпретировать какие-либо символы как escape-последовательности.
Дополнительные сведения см. в about_Quoting_Rules.
Тип: | String[] |
Aliases: | 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
Возвращает объект, представляющий содержимое. По умолчанию этот командлет не создает выходные данные.
Тип: | 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.
Задает альтернативный поток данных для содержимого. Если поток не существует, этот командлет создает его. Подстановочные знаки не поддерживаются.
Stream — это динамический параметр, в Set-Content
который добавляется поставщик FileSystem. Этот параметр работает только на дисках с файловой системой.
Командлет можно использовать Set-Content
для создания или обновления содержимого любого альтернативного потока данных, например Zone.Identifier
. Однако это не рекомендуется для устранения проверок безопасности, которые блокируют файлы, скачанные из Интернета. Если вы убедитесь, что скачанный файл является безопасным, используйте 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
Показывает, что произойдет при запуске командлета. Командлет не выполняется.
Тип: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
Входные данные
Объект, содержащий новое значение для элемента, можно передать в этот командлет.
Выходные данные
None
По умолчанию этот командлет не возвращает выходные данные.
При использовании параметра PassThru этот командлет возвращает строку, представляющую содержимое.
Примечания
Set-Content
предназначен для обработки строк. Если в него передаются нестроковые объектыSet-Content
, он преобразует объект в строку перед его записью. Для записи объектов в файлы используйтеOut-File
.- Командлет
Set-Content
предназначен для работы с данными, предоставляемыми любым поставщиком. Чтобы вывести список поставщиков, доступных в данном сеансе, введите командлетGet-PsProvider
. Дополнительные сведения см. в about_Providers.
Связанные ссылки
PowerShell