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 в командной строке или отправить содержимое через конвейер.
Если вам нужно создать файлы или каталоги для следующих примеров, см. раздел 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. Create новый файл и запись содержимого
В этом примере создается новый файл и записывается текущая дата и время в файл.
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. Замена текста в файле
Эта команда заменяет все экземпляры word в существующем файле.
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
можно указать фильтр. При использовании фильтров для определения параметра Path необходимо добавить в конечную звездочку (*
), чтобы указать содержимое пути.
Следующая команда задает для содержимого всех *.txt
файлов в каталоге C:\Temp
значение пуст.
Set-Content -Path C:\Temp\* -Filter *.txt -Value "Empty"
Параметры
-AsByteStream
Это динамический параметр, доступный поставщиком FileSystem . Дополнительные сведения см. в разделе about_FileSystem_Provider.
Указывает, что содержимое должно быть записано в виде потока байтов. Этот параметр появился в PowerShell 6.0.
Предупреждение возникает при использовании параметра AsByteStream с параметром Encoding . Параметр AsByteStream игнорирует любую кодировку, а выходные данные записываются в виде потока байтов.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Confirm
Запрос подтверждения перед выполнением командлета.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Credential
Примечание
Этот параметр не поддерживается поставщиками, установленными с помощью PowerShell. Чтобы олицетворить другого пользователя или повысить уровень учетных данных при выполнении этого командлета, используйте Invoke-Command.
Type: | PSCredential |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Encoding
Это динамический параметр, доступный поставщиком FileSystem . Дополнительные сведения см. в разделе about_FileSystem_Provider.
Указывает тип кодировки для целевого файла. Значение по умолчанию — utf8NoBOM
.
Кодирование — это динамический параметр, который поставщик FileSystem добавляет в Set-Content
. Этот параметр работает только на дисках с файловой системой.
Ниже приведены допустимые значения для этого параметра.
ascii
: использует кодировку для кодировки 7-разрядной кодировки ASCII.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.
Примечание
UTF-7* больше не рекомендуется использовать. В PowerShell 7.1, если указать utf7
для параметра Encoding , создается предупреждение.
Type: | Encoding |
Accepted values: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | Named |
Default value: | utf8NoBOM |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Exclude
Указывает в качестве массива строк элемент или элементы, которые этот командлет исключает в операции. Значение этого параметра определяет параметр Path. Введите элемент пути или шаблон, например *.txt
. Можно использовать подстановочные знаки. Параметр Exclude действует только в том случае, если команда включает содержимое элемента, например C:\Windows\*
, где подстановочный знак указывает содержимое C:\Windows
каталога.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Filter
Указывает фильтр для указания параметра Path . Поставщик FileSystem — единственный установленный поставщик PowerShell, который поддерживает использование фильтров. Синтаксис языка фильтра FileSystem можно найти в about_Wildcards. Фильтры более эффективны, чем другие параметры, так как поставщик применяет их, когда командлет получает объекты, а не фильтрует объекты PowerShell после их извлечения.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Force
Заставляет командлет задать содержимое файла, даже если файл доступен только для чтения. Применение этого параметра зависит от конкретного поставщика. Дополнительные сведения см. в разделе about_Providers. Параметр Force не переопределяет ограничения безопасности.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Include
Указывает в качестве массива строк элемент или элементы, которые этот командлет включает в операцию. Значение этого параметра определяет параметр Path. Введите элемент пути или шаблон, например "*.txt"
. Можно использовать подстановочные знаки. Параметр Include действует только в том случае, если команда включает содержимое элемента, например C:\Windows\*
, где подстановочный знак указывает содержимое C:\Windows
каталога.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-LiteralPath
Указывает путь к одному или нескольким расположениям. Значение LiteralPath используется точно так же, как и в типизированном виде. Никакие символы не интерпретируются как знаки подстановки. Если путь содержит escape-символы, заключите его в одинарные кавычки. Одинарные кавычки предписывают PowerShell не интерпретировать какие-либо символы как escape-последовательности.
Дополнительные сведения см. в разделе about_Quoting_Rules.
Type: | String[] |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-NoNewline
Это динамический параметр, доступный поставщиком FileSystem . Дополнительные сведения см. в разделе about_FileSystem_Provider.
Строковые представления входных объектов объединяются для формирования выходных данных. Пробелы или новые строки не вставляются между выходными строками. После последней выходной строки новая строка не добавляется.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-PassThru
Возвращает объект , представляющий содержимое. По умолчанию этот командлет не создает выходные данные.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
Указывает путь к элементу, который получает содержимое. Можно использовать подстановочные знаки.
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | 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
можно задать содержимое альтернативных потоков данных из каталогов и файлов.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Value
Указывает новое содержимое для элемента.
Type: | Object[] |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-WhatIf
Показывает, что произойдет при запуске командлета. Командлет не выполняется.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Входные данные
Вы можете передать объект, содержащий новое значение элемента, в этот командлет.
Выходные данные
None
По умолчанию этот командлет не возвращает выходные данные.
При использовании параметра PassThru этот командлет возвращает строку, представляющую содержимое.
Примечания
Set-Content
предназначен для обработки строк. Если передать нестроковые объекты вSet-Content
, он преобразует объект в строку перед его записью. Для записи объектов в файлы используйте .Out-File
- Командлет
Set-Content
предназначен для работы с данными, предоставляемыми любым поставщиком. Чтобы вывести список поставщиков, доступных в данном сеансе, введите командлетGet-PsProvider
. Дополнительные сведения см. в разделе about_Providers.