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

Синтаксис

Set-Content [-LiteralPath] <string[]> [-Value] <Object[]> [-Credential <PSCredential>] [-Exclude <string[]>] [-Filter <string>] [-Force] [-Include <string[]>] [-PassThru] [-Confirm] [-WhatIf] [-UseTransaction] [<CommonParameters>]

Set-Content [-Path] <string[]> [-Value] <Object[]> [-Credential <PSCredential>] [-Exclude <string[]>] [-Filter <string>] [-Force] [-Include <string[]>] [-PassThru] [-Confirm] [-WhatIf] [-UseTransaction] [<CommonParameters>]

Описание

Командлет Set-Content предназначен для обработки строк, он записывает новое содержимое в указанный элемент (например, файл) или заменяет старое содержимое элемента. В отличие от командлета Add-Content, который добавляет содержимое в конец файла, командлет Set-Content заменяет существующие в файле данные новыми. Новое содержимое можно ввести в команде или передать командлету Set-Content по конвейеру.

Параметры

-Credential <PSCredential>

Задает учетную запись пользователя, который располагает разрешением для выполнения этого действия. По умолчанию используется значение "Текущий пользователь".

Введите имя пользователя, например "User01" или "Domain01\User01", или введите объект PSCredential, например объект, создаваемый командлетом Get-Credential. При вводе имени пользователя система запросит пароль.

Этот параметр не поддерживается ни одним из установленных с Windows PowerShell поставщиком

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

true (ByPropertyName)

Принимать подстановочные знаки?

false

-Exclude <string[]>

Исключает указанные элементы. Значение этого параметра определяет значение параметра Path. Введите элемент пути или шаблон, например "*.txt". Подстановочные знаки разрешены.

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-Filter <string>

Задает фильтр с использованием формата или языка поставщика. Значение этого параметра определяет значение параметра Path. Синтаксис фильтра, в том числе использование подстановочных знаков, зависит от поставщика. Фильтры эффективнее других параметров, потому что поставщик применяет их при извлечении объектов (вместо использования Windows PowerShell для фильтрации извлеченных объектов).

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-Force

Позволяет командлету задать содержимое файла, даже если файл доступен только для чтения. Реализация варьируется от поставщика к поставщику. Дополнительные сведения см. в разделе About_Providers. Даже при использовании параметра Force командлет не может переопределить ограничения безопасности.

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-Include <string[]>

Изменяет только указанные элементы. Значение этого параметра определяет значение параметра Path. Введите элемент пути или шаблон, например "*.txt". Подстановочные знаки разрешены.

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-LiteralPath <string[]>

Задает путь к элементу, получающему содержимое. В отличие от значения параметра Path, значение параметра LiteralPath используется точно в том виде, в котором оно введено. Никакие символы не интерпретируются как подстановочные знаки. Если путь включает escape-символы, его нужно заключить в одиночные кавычки. Одиночные кавычки указывают оболочке Windows PowerShell, что никакие символы не следует интерпретировать как escape-символы.

Обязательно?

true

Позиция?

1

Значение по умолчанию

Принимать входные данные из конвейера?

true (ByPropertyName)

Принимать подстановочные знаки?

false

-PassThru

Возвращает объект, представляющий содержимое. По умолчанию этот командлет не формирует никаких выходных данных.

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-Path <string[]>

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

Обязательно?

true

Позиция?

1

Значение по умолчанию

Принимать входные данные из конвейера?

true (ByPropertyName)

Принимать подстановочные знаки?

false

-Value <Object[]>

Задает новое содержимое элемента.

Обязательно?

true

Позиция?

2

Значение по умолчанию

Принимать входные данные из конвейера?

true (ByValue, ByPropertyName)

Принимать подстановочные знаки?

false

-Confirm

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

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-WhatIf

Описывает, что произойдет при выполнении команды, без ее фактического выполнения.

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-UseTransaction

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

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

<CommonParameters>

Данный командлет поддерживает общие параметры -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer и -OutVariable. Дополнительные сведения см. в разделе about_Commonparameters.

Ввод и вывод

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

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

System.Object

Объект, содержащий новое значение для элемента, можно передать командлету Set-Content по конвейеру.

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

Нет или System.String

При использовании параметра Passthru командлет Set-Content создает объект System.String, представляющий содержимое. В противном случае этот командлет не формирует никаких выходных данных.

Примечания

Командлет Set-Content также можно вызывать с помощью встроенного псевдонима "sc". Дополнительные сведения см. в разделе About_Aliases.

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

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

Пример 1

C:\PS>set-content -path C:\Test1\test*.txt -value "Hello, World"

Описание
-----------
Эта команда удаляет содержимое всех файлов из папки Test1, имена которых начинаются с "test" и которые содержат строку "Hello, World". Этот пример показывает, как задать содержимое в тексте команды.






Пример 2

C:\PS>get-date | set-content C:\Test1\date.csv

Описание
-----------
Эта команда создает файл из строк переменной длины с разделителями-запятыми (CSV), в котором содержатся только текущие время и дата. Для извлечения текущего системного времени и даты используется командлет Get-Date. Оператор конвейера передает результат командлету Set-Content, который создает файл и записывает в него содержимое.

Если папка Test1 не существует, команда завершается ошибкой. Если не существует файл, команда его создает.






Пример 3

C:\PS>(get-content Notice.txt) | foreach-object {$_ -replace "Warning", "Caution"} | set-content Notice.txt

Описание
-----------
Эта команда заменяет в файле Notice.txt все вхождения слова "Warning" на "Caution". 

Для получения содержимого файла Notice.txt в этой команде используется командлет Get-Content. Результаты с помощью оператора конвейера передаются командлету ForEach-Object, который применяет выражение к каждой строке содержимого, полученного с помощью Get-Content. В указанном выражении для обращения к текущему элементу используется знак "$_", а заменяемый текст задается с помощью параметра Replace. 

Следующий оператор конвейера передает измененное содержимое командлету Set-Content, который заменяет указанный текст файла Notice.txt новым содержимым.

Скобки, в которые заключен командлет Get-Content, обеспечивают, что операция Set не будет начата до завершения операции Get. Без них команда завершится с ошибкой, так как две указанных функции будут пытаться одновременно получить доступ к одному и тому же файлу.






См. также




Содержание