Поделиться через


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

Входные данные

Object

Вы можете передать объект, содержащий новое значение элемента, в этот командлет.

Выходные данные

None

По умолчанию этот командлет не возвращает выходные данные.

String

При использовании параметра PassThru этот командлет возвращает строку, представляющую содержимое.

Примечания

  • Set-Content предназначен для обработки строк. Если передать нестроковые объекты в Set-Content, он преобразует объект в строку перед его записью. Для записи объектов в файлы используйте .Out-File
  • Командлет Set-Content предназначен для работы с данными, предоставляемыми любым поставщиком. Чтобы вывести список поставщиков, доступных в данном сеансе, введите командлет Get-PsProvider. Дополнительные сведения см. в разделе about_Providers.