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

Запрос подтверждения перед выполнением командлета.

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.

Указывает тип кодировки для целевого файла. Значение по умолчанию — 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. Этот параметр работает только на дисках с файловой системой.

Type:FileSystemCmdletProviderEncoding
Accepted values:ASCII, BigEndianUnicode, BigEndianUTF32, Byte, Default, OEM, String, Unicode, Unknown, UTF7, UTF8, UTF32
Position:Named
Default value:Default
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_Wild карта. Фильтры более эффективны, чем другие параметры, так как поставщик применяет их, когда командлет получает объекты, а не фильтрует объекты После их получения.

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
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 — это динамический параметр, в Set-Contentкоторый добавляется поставщик FileSystem. Этот параметр работает только на дисках с файловой системой.

Командлет можно использовать Set-Content для создания или обновления содержимого любого альтернативного потока данных, например Zone.Identifier. Однако мы не рекомендуем это сделать так, чтобы устранить проверка безопасности, которые блокируют файлы, скачанные из Интернета. Если вы убедитесь, что скачанный файл является безопасным, используйте Unblock-File командлет.

Этот параметр появился в PowerShell 3.0.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UseTransaction

Включает команду в активную транзакцию. Этот параметр доступен только при выполнении транзакции. Дополнительные сведения см. в about_Transactions.

Type:SwitchParameter
Aliases:usetx
Position:Named
Default value:False
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 этот командлет возвращает строку, представляющую содержимое.

Примечания

Windows PowerShell включает следующие псевдонимы для Set-Content:

  • sc

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

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