Set-Content
Записывает новое содержимое или заменяет существующее содержимое в файле.
Синтаксис
Set-Content
[-Path] <string[]>
[-Value] <Object[]>
[-PassThru]
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Force]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[-UseTransaction]
[-NoNewline]
[-Encoding <FileSystemCmdletProviderEncoding>]
[-Stream <string>]
[<CommonParameters>]
Set-Content
[-Value] <Object[]>
-LiteralPath <string[]>
[-PassThru]
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Force]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[-UseTransaction]
[-NoNewline]
[-Encoding <FileSystemCmdletProviderEncoding>]
[-Stream <string>]
[<CommonParameters>]
Set-Content
[-Path] <string[]>
[-Value] <Object[]>
[-PassThru]
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Force]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[-UseTransaction]
[<CommonParameters>]
Set-Content
[-Value] <Object[]>
-LiteralPath <string[]>
[-PassThru]
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Force]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[-UseTransaction]
[<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"
Параметры
-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.
Указывает тип кодировки для целевого файла. Значение по умолчанию — Default
.
Кодировка — это динамический параметр, в Set-Content
который добавляется поставщик FileSystem. Этот параметр работает только на дисках с файловой системой.
Допустимые значения для этого параметра приведены следующим образом:
Ascii
Использует набор символов ASCII (7-разрядный).BigEndianUnicode
Использует UTF-16 с порядком байтов больших байтов.BigEndianUTF32
Использует UTF-32 с порядком байтов больших байтов.Byte
Кодирует набор символов в последовательность байтов.Default
Использует кодировку, соответствующую активной кодовой странице системы (обычно ANSI).Oem
Использует кодировку, соответствующую текущей кодовой странице OEM системы.String
аналогиченUnicode
.Unicode
Использует UTF-16 с маленьким порядком байтов.Unknown
аналогиченUnicode
.UTF7
Использует UTF-7.UTF8
Использует UTF-8.UTF32
Использует UTF-32 с маленьким порядком байтов.
Кодировка — это динамический параметр, в Set-Content
который добавляется поставщик FileSystem. Этот параметр работает только на дисках с файловой системой.
Тип: | FileSystemCmdletProviderEncoding |
Допустимые значения: | ASCII, BigEndianUnicode, BigEndianUTF32, Byte, Default, OEM, String, Unicode, Unknown, UTF7, UTF8, UTF32 |
Position: | Named |
Default value: | Default |
Обязательно: | 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 |
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.
Тип: | String |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-UseTransaction
Включает команду в активную транзакцию. Этот параметр доступен только при выполнении транзакции. Дополнительные сведения см. в about_Transactions.
Тип: | SwitchParameter |
Aliases: | usetx |
Position: | Named |
Default value: | False |
Обязательно: | 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 этот командлет возвращает строку, представляющую содержимое.
Примечания
Windows PowerShell включает следующие псевдонимы для Set-Content
:
sc
Set-Content
предназначен для обработки строк. Если в него передаются нестроковые объектыSet-Content
, он преобразует объект в строку перед его записью. Для записи объектов в файлы используйтеOut-File
.Командлет
Set-Content
предназначен для работы с данными, предоставляемыми любым поставщиком. Чтобы вывести список поставщиков, доступных в данном сеансе, введите командлетGet-PsProvider
. Дополнительные сведения см. в about_Providers.
Связанные ссылки
PowerShell