Powershell добавить строку в файл
Добавляет содержимое в указанные элементы, например слова в файл.
Inputs
You can pipe an object that contains the new value for the item to Set-Content .
Переименуйте файл
Эта команда переименовывает a.txt файл в C:\a каталоге b.txt следующим образом:
Пример 5. Создание файла и копирование содержимого
В этом примере создается новый файл и копируется содержимое существующего файла в новый файл.
- Командлет Add-Content использует параметры path и Value для создания нового файла в текущем каталоге.
- Командлет Get-Content получает содержимое существующего файла CopyFromFile.txt и передает его параметру Value . Круглые скобки вокруг командлета Get-Content гарантируют, что команда завершается до Add-Content начала команды.
- Командлет Get-Content отображает содержимое нового файла. NewFile.txt
Example 3: Add the contents of a specified file to another file
This example gets the content from a file and stores the content in a variable. The variable is used to append the content into another file.
- The Get-Content cmdlet gets the contents of CopyFromFile.txt and stores the contents in the $From variable.
- The Add-Content cmdlet updates the CopyToFile.txt file using the contents of the $From variable.
- The Get-Content cmdlet displays CopyToFile.txt.
Examples
Получение файлов и папок с указанными атрибутами
Вызов файла
Первая команда использует командлет Get-Service для получения сведений о локальных службах.
Он передает сведения в командлет Export-CSV , а затем сохраняет эти сведения в Services.csv файле.
Вторая команда использует Invoke-Item для открытия services.csv файла в программе, связанной с .csv расширением:
Description
Set-Content is a string-processing cmdlet that writes new content or replaces the content in a file. Set-Content replaces the existing content and differs from the Add-Content cmdlet that appends content to a file. To send content to Set-Content you can use the Value parameter on the command line or send content through the pipeline.
If you need to create files or directories for the following examples, see New-Item.
Создание каталога
Эта команда создает logfiles каталог на C диске:
PowerShell также включает mkdir функцию (псевдоним md ), которая использует командлет New-Item для создания нового каталога.
Outputs
None or System.String
When you use the PassThru parameter, Set-Content generates a System.String object that represents the content. Otherwise, this cmdlet does not generate any output.
Adds content to the specified items, such as adding words to a file.
Example 7: Use Filters with Add-Content
You can specify a filter to the Add-Content cmdlet. When using filters to qualify the Path parameter, you need to include a trailing asterisk ( * ) to indicate the contents of the path.
The following command adds the word "Done" the content of all *.txt files in the C:\Temp directory.
Копирование файлов и каталогов
Copy-Item Командлет копирует файлы и каталоги в указанное расположение. Параметры можно использовать для фильтрации и рекурсии, аналогично Get-ChildItem .
следующая команда копирует все файлы и каталоги по пути "C:\temp " в папку" C:\ Windows \temp ".
Copy-Item перезаписывает файлы в целевом каталоге без запроса подтверждения.
Эта команда копирует a.txt файл из C:\a каталога в C:\a\bb каталог.
Копирует все каталоги и файлы из C:\a каталога C:\c в каталог. Если какие-либо копируемые каталоги уже существуют в целевом каталоге, то команда завершится с ошибкой, если не указан параметр Force.
Дополнительные сведения см. в разделе Copy-Item.
Example 1: Add a string to all text files with an exception
This example appends a value to text files in the current directory but excludes files based on their file name.
The Path parameter specifies all .txt files in the current directory, but the Exclude parameter ignores file names that match the specified pattern. The Value parameter specifies the text string that is written to the files.
Use Get-Content to display the contents of these files.
Описание
Командлет Add-Content добавляет содержимое к указанному элементу или файлу. Содержимое можно задать прямо в команде либо путем указания объекта, в котором оно хранится.
Если вам нужно создать файлы или каталоги для следующих примеров, см. раздел New-Item.
Пример 6. Добавление содержимого в файл только для чтения
Эта команда добавляет значение в файл, даже если для атрибута файла IsReadOnly задано значение True. Действия по созданию файла, доступного только для чтения, включены в пример.
- Командлет New-Item использует параметры Path и ItemType для создания файла IsReadOnlyTextFile.txt в текущем каталоге.
- Командлет Set-ItemProperty использует параметры Name и Value для изменения свойства IsReadOnly файла на True.
- Командлет Get-ChildItem показывает, что файл пуст (0) и имеет атрибут только для чтения ( r ).
- Командлет Add-Content использует параметр Path для указания файла. Параметр Value включает текстовую строку для добавления в файл. Параметр Force записывает текст в файл только для чтения.
- Командлет Get-Content использует параметр Path для отображения содержимого файла.
Чтобы удалить атрибут только для чтения, используйте Set-ItemProperty команду с параметром Value , равным False .
Создание файла
Эта команда создает log2.txt файл в C:\logfiles каталоге, а затем добавляет в файл строку "Журнал теста":
Запуск программы путем вызова связанного файла
Переименование файлов и каталогов
Syntax
Навигация по дискам файловой системы
Поставщик FileSystem предоставляет свои хранилища данных путем сопоставления логических дисков на компьютере с дисками PowerShell. Для работы с диском файловой системы можно изменить расположение на диск, используя имя диска, за которым следует двоеточие ( : ).
Вы также можете работать с поставщиком FileSystem с любого другого диска PowerShell. Чтобы сослаться на файл или каталог из другого расположения, используйте имя диска ( C: , D: . ) в пути.
PowerShell использует Псевдонимы для предоставления привычного способа работы с путями поставщика. Команды, такие как dir и ls , теперь являются псевдонимами для Get-ChildItem, cd являются псевдонимом для Set-Location. и pwd — это псевдоним для Get-Location.
Example 2: Create a new file and write content
This example creates a new file and writes the current date and time to the file.
Set-Content uses the Path and Value parameters to create a new file named DateTime.txt in the current directory. The Value parameter uses Get-Date to get the current date and time. Set-Content writes the DateTime object to the file as a string. The Get-Content cmdlet uses the Path parameter to display the content of DateTime.txt in the PowerShell console.
Получение файлов и каталогов
Get-ChildItem Командлет возвращает все файлы и каталоги в текущем расположении. Можно указать другой путь для поиска и использовать встроенные параметры для фильтрации и управления глубиной рекурсии.
Дополнительные сведения об использовании командлетов см. в статье Get-ChildItem.
Пример 4. Добавление содержимого указанного файла в другой файл с помощью конвейера
В этом примере содержимое из файла получается и передается в Add-Content командлет.
Командлет Get-Content получает содержимое CopyFromFile.txt . Результаты передаются Add-Content в командлет, который обновляет CopyToFile.txt . Отображается CopyToFile.txt последний Get-Content командлет.
Удаление файлов и каталогов
Синтаксис
Inputs
System.Object, System.Management.Automation.PSCredential
You can pipe values, paths, or credentials to Set-Content .
Получение скрытых файлов
Эта команда возвращает все файлы, включая скрытые файлы, в текущем каталоге.
В нем используется параметр Attributes с двумя значениями, !Directory+Hidden , который получает скрытые файлы, и !Directory , который получает все остальные файлы.
dir -att !d,!d+h эквивалентна этой команде.
Выходные данные
Нет или System.String
При использовании параметра PassThru создается объект System.String, Add-Content представляющий содержимое. В противном случае командлет не формирует никаких выходных данных.
Writes new content or replaces existing content in a file.
Example 4: Use Filters with Set-Content
You can specify a filter to the Set-Content cmdlet. When using filters to qualify the Path parameter, you need to include a trailing asterisk ( * ) to indicate the contents of the path.
The following command set the content all *.txt files in the C:\Temp directory to the Value empty.
Создание и задание списка управления доступом для файла
Управление дескрипторами безопасности
Example 2: Add a date to the end of the specified files
This example appends the date to files in the current directory and displays the date in the PowerShell console.
The Add-Content cmdlet creates two new files in the current directory. The Value parameter contains the output of the Get-Date cmdlet. The PassThru parameter outputs the added contents to the pipeline. Because there is no other cmdlet to receive the output, it is displayed in the PowerShell console. The Get-Content cmdlet displays the updated file, DateTimeFile1.log .
Перемещение файлов и каталогов
Эта команда перемещает c.txt файл в C:\a каталог C:\a\aa в каталог:
Команда не перезапишет автоматически существующий файл с тем же именем. Для принудительной перезаписи существующего файла необходимо задать параметр Force.
Нельзя перемещать каталог, если он совпадает с текущим местоположением. При использовании Move-Item для перемещения каталога в текущем расположении отображается эта ошибка.
Создание файла с содержимым
Создает файл с именем log2.txt в C:\logfiles каталоге и добавляет в файл строку "тестовый журнал".
Parameters
Specifies that the content should be written as a stream of bytes. This parameter was introduced in PowerShell 6.0.
A warning occurs when you use the AsByteStream parameter with the Encoding parameter. The AsByteStream parameter ignores any encoding and the output is written as a stream of bytes.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Prompts you for confirmation before running the cmdlet.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
This parameter is not supported by any providers installed with PowerShell. To impersonate another user, or elevate your credentials when running this cmdlet, use Invoke-Command.
Type: | PSCredential |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Specifies the type of encoding for the target file. The default value is utf8NoBOM .
Encoding is a dynamic parameter that the FileSystem provider adds to Set-Content . This parameter works only in file system drives.
The acceptable values for this parameter are as follows:
- ascii : Uses the encoding for the ASCII (7-bit) character set.
- bigendianunicode : Encodes in UTF-16 format using the big-endian byte order.
- bigendianutf32 : Encodes in UTF-32 format using the big-endian byte order.
- oem : Uses the default encoding for MS-DOS and console programs.
- unicode : Encodes in UTF-16 format using the little-endian byte order.
- utf7 : Encodes in UTF-7 format.
- utf8 : Encodes in UTF-8 format.
- utf8BOM : Encodes in UTF-8 format with Byte Order Mark (BOM)
- utf8NoBOM : Encodes in UTF-8 format without Byte Order Mark (BOM)
- utf32 : Encodes in UTF-32 format.
UTF-7* is no longer recommended to use. As of PowerShell 7.1, a warning is written if you specify utf7 for the Encoding parameter.
Type: | Encoding |
Accepted values: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | Named |
Default value: | UTF8NoBOM |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies, as a string array, an item or items that this cmdlet excludes in the operation. The value of this parameter qualifies the Path parameter. Enter a path element or pattern, such as *.txt . Wildcard characters are permitted. The Exclude parameter is effective only when the command includes the contents of an item, such as C:\Windows\* , where the wildcard character specifies the contents of the C:\Windows directory.
Type: | String [ ] |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | True |
Specifies a filter to qualify the Path parameter. The FileSystem provider is the only installed PowerShell provider that supports the use of filters. You can find the syntax for the FileSystem filter language in about_Wildcards. Filters are more efficient than other parameters, because the provider applies them when the cmdlet gets the objects rather than having PowerShell filter the objects after they are retrieved.
Type: | String |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | True |
Forces the cmdlet to set the contents of a file, even if the file is read-only. Implementation varies from provider to provider. For more information, see about_Providers. The Force parameter does not override security restrictions.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies, as a string array, an item or items that this cmdlet includes in the operation. The value of this parameter qualifies the Path parameter. Enter a path element or pattern, such as "*.txt" . Wildcard characters are permitted. The Include parameter is effective only when the command includes the contents of an item, such as C:\Windows\* , where the wildcard character specifies the contents of the C:\Windows directory.
Type: | String [ ] |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | True |
Specifies a path to one or more locations. The value of LiteralPath is used exactly as it is typed. No characters are interpreted as wildcards. If the path includes escape characters, enclose it in single quotation marks. Single quotation marks tell PowerShell not to interpret any characters as escape sequences.
Type: | String [ ] |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
The string representations of the input objects are concatenated to form the output. No spaces or newlines are inserted between the output strings. No newline is added after the last output string.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Returns an object that represents the content. By default, this cmdlet does not generate any output.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies the path of the item that receives the content. Wildcard characters are permitted.
Type: | String [ ] |
Position: | 0 |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | True |
This Parameter is only available on Windows.
Specifies an alternative data stream for content. If the stream does not exist, this cmdlet creates it. Wildcard characters are not supported.
Stream is a dynamic parameter that the FileSystem provider adds to Set-Content . This parameter works only in file system drives.
You can use the Set-Content cmdlet to create or update the content of any alternate data stream, such as Zone.Identifier . However, we do not recommend this as a way to eliminate security checks that block files that are downloaded from the Internet. If you verify that a downloaded file is safe, use the Unblock-File cmdlet.
This parameter was introduced in PowerShell 3.0. As of PowerShell 7.2, Set-Content can set the content of alternative data streams from directories as well as files.
Type: | String |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies the new content for the item.
Type: | Object [ ] |
Position: | 1 |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Shows what would happen if the cmdlet runs. The cmdlet is not run.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Просмотр списка ACL для файла
Чтобы получить дополнительные сведения об этом объекте, передайте команду в командлет Get-Member по конвейеру. Или см. раздел класс FileSecurity .
Удаление файла
Эта команда удаляет Test.txt файл в текущем каталоге:
Parameters
Specifies that the content should be read as a stream of bytes. This parameter was introduced in PowerShell 6.0.
A warning occurs when you use the AsByteStream parameter with the Encoding parameter. The AsByteStream parameter ignores any encoding and the output is returned as a stream of bytes.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Prompts you for confirmation before running the cmdlet.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
This parameter is not supported by any providers installed with PowerShell. To impersonate another user, or elevate your credentials when running this cmdlet, use Invoke-Command.
Type: | PSCredential |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Specifies the type of encoding for the target file. The default value is utf8NoBOM .
Encoding is a dynamic parameter that the FileSystem provider adds to the Add-Content cmdlet. This parameter works only in file system drives.
The acceptable values for this parameter are as follows:
- ascii : Uses the encoding for the ASCII (7-bit) character set.
- bigendianunicode : Encodes in UTF-16 format using the big-endian byte order.
- bigendianutf32 : Encodes in UTF-32 format using the big-endian byte order.
- oem : Uses the default encoding for MS-DOS and console programs.
- unicode : Encodes in UTF-16 format using the little-endian byte order.
- utf7 : Encodes in UTF-7 format.
- utf8 : Encodes in UTF-8 format.
- utf8BOM : Encodes in UTF-8 format with Byte Order Mark (BOM)
- utf8NoBOM : Encodes in UTF-8 format without Byte Order Mark (BOM)
- utf32 : Encodes in UTF-32 format.
UTF-7* is no longer recommended to use. As of PowerShell 7.1, a warning is written if you specify utf7 for the Encoding parameter.
Type: | Encoding |
Accepted values: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | Named |
Default value: | UTF8NoBOM |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies, as a string array, an item or items that this cmdlet excludes in the operation. The value of this parameter qualifies the Path parameter. Enter a path element or pattern, such as *.txt . Wildcard characters are permitted. The Exclude parameter is effective only when the command includes the contents of an item, such as C:\Windows\* , where the wildcard character specifies the contents of the C:\Windows directory.
Type: | String [ ] |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | True |
Specifies a filter to qualify the Path parameter. The FileSystem provider is the only installed PowerShell provider that supports the use of filters. You can find the syntax for the FileSystem filter language in about_Wildcards. Filters are more efficient than other parameters, because the provider applies them when the cmdlet gets the objects rather than having PowerShell filter the objects after they are retrieved.
Type: | String |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | True |
Overrides the read-only attribute, allowing you to add content to a read-only file. For example, Force overrides the read-only attribute but it does not change file permissions.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies, as a string array, an item or items that this cmdlet includes in the operation. The value of this parameter qualifies the Path parameter. Enter a path element or pattern, such as "*.txt" . Wildcard characters are permitted. The Include parameter is effective only when the command includes the contents of an item, such as C:\Windows\* , where the wildcard character specifies the contents of the C:\Windows directory.
Type: | String [ ] |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | True |
Specifies a path to one or more locations. The value of LiteralPath is used exactly as it is typed. No characters are interpreted as wildcards. If the path includes escape characters, enclose it in single quotation marks. Single quotation marks tell PowerShell not to interpret any characters as escape sequences.
Type: | String [ ] |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Indicates that this cmdlet does not add a new line or carriage return to the content.
The string representations of the input objects are concatenated to form the output. No spaces or newlines are inserted between the output strings. No newline is added after the last output string.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Returns an object representing the added content. By default, this cmdlet does not generate any output.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies the path to the items that receive the additional content. Wildcard characters are permitted. The paths must be paths to items, not to containers. For example, you must specify a path to one or more files, not a path to a directory. If you specify multiple paths, use commas to separate the paths.
Type: | String [ ] |
Position: | 0 |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | True |
This Parameter is only available on Windows.
Specifies an alternative data stream for content. If the stream does not exist, this cmdlet creates it. Wildcard characters are not supported.
Stream is a dynamic parameter that the FileSystem provider adds to Add-Content . This parameter works only in file system drives.
You can use the Add-Content cmdlet to change the content of any alternate data stream, such as Zone.Identifier . However, we do not recommend this as a way to eliminate security checks that block files that are downloaded from the Internet. If you verify that a downloaded file is safe, use the Unblock-File cmdlet.
This parameter was introduced in PowerShell 3.0.
Type: | String |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies the content to be added. Type a quoted string, such as This data is for internal use only, or specify an object that contains content, such as the DateTime object that Get-Date generates.
You cannot specify the contents of a file by typing its path, because the path is just a string. You can use a Get-Content command to get the content and pass it to the Value parameter.
Type: | Object [ ] |
Position: | 1 |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Shows what would happen if the cmdlet runs. The cmdlet is not run.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Поддерживаемые командлеты
Examples
Example 4: Add the contents of a specified file to another file using the pipeline
This example gets the content from a file and pipes it to the Add-Content cmdlet.
The Get-Content cmdlet gets the contents of CopyFromFile.txt . The results are piped to the Add-Content cmdlet, which updates the CopyToFile.txt . The last Get-Content cmdlet displays CopyToFile.txt .
Параметры
Запрос подтверждения перед выполнением командлета.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Этот параметр не поддерживается поставщиками, установленными с помощью PowerShell. Чтобы олицетворять другого пользователя или повысить свои учетные данные при выполнении этого командлета, используйте Invoke-Command.
Type: | PSCredential |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Указывает тип кодировки для целевого файла. Значение по умолчанию — Default .
Допустимые значения для этого параметра:
- Ascii Использует набор символов ASCII (7-разрядный).
- BigEndianUnicode Использует UTF-16 с порядком байтов большого конца.
- BigEndianUTF32 Использует UTF-32 с порядком байтов большого байта.
- Byte Кодирует набор символов в последовательность байтов.
- Default Использует кодировку, соответствующую активной кодовой странице системы (обычно ANSI).
- Oem Использует кодировку, соответствующую текущей кодовой странице OEM системы.
- String То же, что и Юникод.
- Unicode Использует UTF-16 с порядком байтов с маленьким порядком байтов.
- Unknown То же, что и Юникод.
- UTF7 Использует UTF-7.
- UTF8 Использует UTF-8.
- UTF32 Использует UTF-32 с порядком байтов с маленьким порядком байтов.
Кодирование — это динамический параметр, который поставщик FileSystem добавляет в Add-Content командлет. Этот параметр работает только на дисках с файловой системой.
Type: | FileSystemCmdletProviderEncoding |
Accepted values: | ASCII, BigEndianUnicode, BigEndianUTF32, Byte, Default, OEM, String, Unicode, Unknown, UTF7, UTF8, UTF32 |
Position: | Named |
Default value: | Default |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Указывает, как массив строк, элемент или элементы, которые этот командлет исключает в операции. Значение этого параметра определяет параметр Path. Введите элемент пути или шаблон, например *.txt . Можно использовать подстановочные знаки. Параметр Exclude действует только в том случае, если команда содержит содержимое элемента, например C:\Windows\* , где подстановочный знак указывает содержимое C:\Windows каталога.
Type: | String [ ] |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | True |
Указывает фильтр для уточнения параметра Path . Поставщик FileSystem — единственный установленный поставщик PowerShell, который поддерживает использование фильтров. Синтаксис языка фильтрации Файловой системы можно найти в about_Wildcards. Фильтры более эффективны, чем другие параметры, так как поставщик применяет их, когда командлет получает объекты, а не фильтрует объекты PowerShell после их извлечения.
Type: | String |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | True |
Переопределяет атрибут «только для чтения», позволяя добавлять содержимое в файл, доступный только для чтения. Например, force переопределяет атрибут только для чтения, но не изменяет разрешения на доступ к файлу.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Указывает, как массив строк, элемент или элементы, которые этот командлет включает в операцию. Значение этого параметра определяет параметр Path. Введите элемент пути или шаблон, например "*.txt" . Можно использовать подстановочные знаки. Параметр Include действует только в том случае, если команда включает содержимое элемента, например C:\Windows\* , где подстановочный знак указывает содержимое C:\Windows каталога.
Type: | String [ ] |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | True |
Указывает путь к одному или нескольким расположениям. Значение LiteralPath используется точно так же, как оно введено. Никакие символы не интерпретируются как знаки подстановки. Если путь содержит escape-символы, заключите его в одинарные кавычки. Одинарные кавычки говорят PowerShell, что никакие символы не интерпретируются как escape-последовательности.
Type: | String [ ] |
Aliases: | PSPath |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Указывает, что этот командлет не добавляет новую строку или каретки в содержимое.
Строковые представления входных объектов объединяются для формирования выходных данных. Пробелы или новые строки не вставляются между выходными строками. После последней выходной строки новая строка не добавляется.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Возвращает объект, представляющий добавленное содержимое. По умолчанию этот командлет не создает выходные данные.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Указывает путь к элементам, которые получают дополнительное содержимое. Можно использовать подстановочные знаки. Пути должны вести к элементам, а не к контейнерам. Например, нужно указать путь к одному или нескольким файлам, а не путь к каталогу. Если нужно указать несколько путей, разделите их запятыми.
Type: | String [ ] |
Position: | 0 |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | True |
Задает альтернативный поток данных для содержимого. Если поток не существует, этот командлет создает его. Подстановочные знаки не поддерживаются.
Stream — это динамический параметр, к которому Add-Content добавляет поставщик FileSystem. Этот параметр работает только на дисках с файловой системой.
С помощью командлета Add-Content можно изменить содержимое любого альтернативного потока данных, например Zone.Identifier . Тем не менее, мы не рекомендуем это сделать так, чтобы исключить проверку безопасности, которая блокирует файлы, скачанные из Интернета. Если вы убедитесь, что скачанный файл является безопасным, используйте Unblock-File командлет.
Этот параметр появился в PowerShell 3.0.
Type: | String |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Включает команду в активную транзакцию. Этот параметр доступен только при выполнении транзакции. Дополнительные сведения см. в разделе about_Transactions.
Type: | SwitchParameter |
Aliases: | usetx |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Задает добавляемое содержимое. Введите строку в кавычках, например эти данные только для внутреннего использования, или укажите объект, содержащий содержимое, например создаваемый объект Get-Date DateTime.
Содержимое файла невозможно указать, введя его путь, так как путь является просто строкой. С помощью Get-Content команды можно получить содержимое и передать его в параметр Value .
Type: | Object [ ] |
Position: | 1 |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Показывает, что произойдет при запуске командлета. Командлет не выполняется.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
System.Object, System.Management.Automation.PSCredential
Значения, пути или учетные данные можно передать по конвейеру Set-Content .
Description
The Add-Content cmdlet appends content to a specified item or file. You can specify the content by typing the content in the command or by specifying an object that contains the content.
If you need to create files or directories for the following examples, see New-Item.
Получение системных файлов
Эта команда возвращает системные файлы в текущем каталоге и его подкаталогах.
Он использует -File параметр для получения только файлов (не каталогов) и -System параметр для получения только элементов с атрибутом System.
Он использует -Recurse параметр для получения элементов в текущем каталоге и всех подкаталогах.
Изменение ACL для файла
Использование конвейера
Командлеты поставщика принимают входные данные конвейера. Вы можете использовать конвейер для упрощения задачи, отправив данные поставщика из одного командлета другому командлету поставщика. Дополнительные сведения об использовании конвейера с командлетами поставщика см. в справочнике по командлетам, приведенным в этой статье.
Example 3: Replace text in a file
This command replaces all instances of word within an existing file.
The Get-Content cmdlet uses the Path parameter to specify the Notice.txt file in the current directory. The Get-Content command is wrapped with parentheses so that the command finishes before being sent down the pipeline.
The contents of the Notice.txt file are sent down the pipeline to the ForEach-Object cmdlet. ForEach-Object uses the automatic variable $_ and replaces each occurrence of Warning with Caution. The objects are sent down the pipeline to the Set-Content cmdlet. Set-Content uses the Path parameter to specify the Notice.txt file and writes the updated content to the file.
The last Get-Content cmdlet displays the updated file content in the PowerShell console.
Пример 2. Добавление даты в конец указанных файлов
В этом примере дата добавляется к файлам в текущем каталоге и отображается дата в консоли PowerShell.
Командлет Add-Content создает два новых файла в текущем каталоге. Параметр Value содержит выходные данные командлета Get-Date . Параметр PassThru выводит добавленное содержимое в конвейер. Так как для получения выходных данных нет другого командлета, он отображается в консоли PowerShell. Командлет Get-Content отображает обновленный файл. DateTimeFile1.log
Получение справки
Начиная с Windows PowerShell 3.0, стали доступны настраиваемые разделы справки по командлетам поставщика, в которых объясняется поведение этих командлетов на диске файловой системы.
Чтобы получить разделы справки, настроенные для диска файловой системы, выполните команду Get-Help на диске файловой системы или используйте -Path параметр командлета Get-Help , чтобы указать диск файловой системы.
Есть задача вставить текстовую строку в определенное место текстового файла. Сделать это можно множеством различных способов, в том числе и с помощью PowerShell. О том, как именно, и пойдет речь далее.
Итак, в папке C:\temp находится текстовый файл file.txt. Для начала выведем его содержимое командой:
В файле всего 5 строк и нам необходимо вставить дополнительную строку между третьей и четвертой. Действовать будем следующим образом:
Сначала возьмем исходный файл и поместим его содержимое в переменную. Команда Get-Content выгружает текстовый файл в виде массива, в котором элементами являются строки. Таким образом в переменной $FileOriginal мы получим массив строк:
$FileName = ″C:\temp\file.txt″
$FileOriginal = Get-Content $FileName
Затем создадим еще один массив строк, пустой:
Строку, которую необходимо вставить, помещаем в переменную:
[String]$string = ″String three and half.″
Теперь берем исходный массив $FileOriginal и в цикле построчно передаем его в новый массив $FileModified, попутно проверяя каждую строку. Если строка соответствует заданному условию, то после нее вставляется дополнительная строка:
Foreach ($Line in $FileOriginal) <
$FileModified += $Line
if ($Line -match ″three″)
>
Ну и в заключение мы берем получившийся массив и записываем его в исходный файл, перезаписывая его.
Set-Content $fileName $FileModified -Force
Все это сохраняем в виде скрипта, запускаем его и получаем вот такой результат.
Если требуется вставить несколько строк, то можно немного изменить скрипт. С помощью конструкции Here-Strings добавим несколько строк в переменную $strings и уже эту переменную будем вставлять в текст:
$FileName = ″C:\temp\file.txt″
$FileOriginal = Get-Content $FileName
[String[]]$FileModified = @()
$strings = @″
String three and quarter.
String three and half.
″@
Foreach ($Line in $FileOriginal) <
$FileModified += $Line
if ($Line -match ″three″)
>
Set-Content $fileName $FileModified -Force
Получится примерно так.
И еще один возможный случай, когда надо не просто вставить новый текст, а заменить существующий. Для этого можно воспользоваться свойством Replace строки. Еще раз изменим скрипт:
$FileName = ″C:\temp\file.txt″
$FileOriginal = Get-Content $FileName
[String[]]$FileModified = @()
[String]$string = ″String three and half.″
Example 6: Add content to a read-only file
This command adds a value to the file even if the IsReadOnly file attribute is set to True. The steps to create a read-only file are included in the example.
- The New-Item cmdlet uses the Path and ItemType parameters to create the file IsReadOnlyTextFile.txt in the current directory.
- The Set-ItemProperty cmdlet uses the Name and Value parameters to change the file's IsReadOnly property to True.
- The Get-ChildItem cmdlet shows the file is empty (0) and has the read-only attribute ( r ).
- The Add-Content cmdlet uses the Path parameter to specify the file. The Value parameter includes the text string to append to the file. The Force parameter writes the text to the read-only file.
- The Get-Content cmdlet uses the Path parameter to display the file's contents.
To remove the read-only attribute, use the Set-ItemProperty command with the Value parameter set to False .
Динамические параметры
Динамические параметры — это параметры командлета, которые добавляются поставщиком PowerShell и доступны только при использовании командлета на диске с поддержкой поставщика.
EncodingУказывает кодировку файла. Значение по умолчанию — ASCII.
- ASCII: использует кодировку для набора символов ASCII (7-разрядных).
- BigEndianUnicode: кодирует в формате UTF-16 с обратным порядком байтов.
- Строка: использует тип кодировки для строки.
- Юникод: кодирует в формате UTF-16 с прямым порядком байтов.
- UTF7: кодирует в формате UTF-7.
- UTF8: кодирует в формате UTF-8.
- UTF8BOM: кодирует в формате UTF-8 с меткой порядка БАЙТОВ (BOM)
- UF8NOBOM: кодирует в формате UTF-8 без метки порядка БАЙТОВ (BOM)
- UTF32: кодирует в формате UTF-32.
- По умолчанию: кодируется на странице установленного по умолчанию кода.
- OEM: использует кодировку по умолчанию для программ MS-DOS и консолей.
- Неизвестно: неизвестный или недопустимый тип кодировки. Данные можно обрабатывать как двоичные.
Поддерживаемые командлеты
DelimiterУказывает разделитель, используемый командлетом Get-Content для разделения файла на объекты при чтении.
Значение по умолчанию — \n , символ конца строки.
При чтении текстового файла командлет Get-Content Возвращает коллекцию строковых объектов, каждая из которых заканчивается символом-разделителем.
При вводе разделителя, который не существует в файле, командлет Get-Content возвращает весь файл как один объект без разделителей.
Этот параметр можно использовать для разбиения большого файла на меньшие файлы, указав разделитель файла, например "Конец примера", в качестве разделителя. Разделитель сохраняется (не удаляется) и становится последним элементом в каждом разделе файла.
В настоящее время, если значение -Delimiter параметра является пустой строкой, командлет Get-Content не возвращает ничего. Это известная проблема. Чтобы принудительно применить командлет Get-Content для возврата всего файла в виде единой неразделенной строки, введите значение, которое не существует в файле.
Поддерживаемые командлеты
Ожидает содержимое для добавления в файл. Если содержимое добавлено, возвращает добавленное содержимое. Если содержимое не изменилось, возвращает весь файл.
Во время ожидания командлет Get-Content проверяет файл раз в секунду, пока не будет прерван, например, нажатием сочетания клавиш CTRL+C.
Поддерживаемые командлеты
AttributesИзвлекает файлы и папки с указанными атрибутами. Этот параметр поддерживает все атрибуты и позволяет указывать сложные сочетания атрибутов.
-Attributes параметр был введен в Windows PowerShell 3,0.
-Attributes Параметр поддерживает следующие атрибуты:
Описание этих атрибутов см. в описании перечисления FileAttributes .
Используйте следующие операторы для объединения атрибутов.
Пробелы между оператором и его атрибутами не допускаются. Однако допустима постановка пробелов перед запятыми.
Поддерживаемые командлеты
DirectoryИзвлекает каталоги (папки).
-Directory параметр был введен в Windows PowerShell 3,0.
Чтобы получить только каталоги, используйте -Directory параметр и опустите -File параметр. Чтобы исключить каталоги, используйте -File параметр и опустите -Directory параметр, либо используйте -Attributes параметр.
Поддерживаемые командлеты
-File параметр был введен в Windows PowerShell 3,0.
Чтобы получить только файлы, используйте -File параметр и опустите -Directory параметр. Чтобы исключить файлы, используйте -Directory параметр и опустите -File параметр, либо используйте -Attributes параметр.
Поддерживаемые командлеты
HiddenВозвращает только скрытые файлы или каталоги (папки). По умолчанию командлет Get-ChildItem получает только нескрытые элементы.
-Hidden параметр был введен в Windows PowerShell 3,0.
Чтобы получить только скрытые элементы, используйте -Hidden параметр, его h псевдонимы или ah скрытое значение -Attributes параметра. Чтобы исключить скрытые элементы, опустите -Hidden параметр или используйте -Attributes параметр.
Поддерживаемые командлеты
ReadOnlyИзвлекает только файлы или каталоги (папки), доступные для чтения.
-ReadOnly параметр был введен в Windows PowerShell 3,0.
Чтобы получить только элементы, доступные только для чтения, используйте -ReadOnly параметр, его ar псевдоним или значение -Attributes ReadOnly параметра. Чтобы исключить элементы, предназначенные только для чтения, используйте -Attributes параметр.
Поддерживаемые командлеты
SystemИзвлекает только системные файлы или каталоги (папки).
-System параметр был введен в Windows PowerShell 3,0.
Чтобы получить только системные файлы и папки, используйте -System параметр, его as псевдоним или системное значение -Attributes параметра. Чтобы исключить системные файлы и папки, используйте -Attributes параметр.
Поддерживаемые командлеты
NewerThanВозвращает $True , если LastWriteTime значение файла больше указанной даты. В противном случае она возвращает $False .
Введите объект DateTime , например, возвращаемый командлетом Get-Date , или строку, которую можно преобразовать в объект DateTime , например "August 10, 2011 2:00 PM" .
Поддерживаемые командлеты
OlderThanВозвращает $True , если LastWriteTime значение файла меньше указанной даты. В противном случае она возвращает $False .
Введите объект DateTime , например, возвращаемый командлетом Get-Date , или строку, которую можно преобразовать в объект DateTime , например "August 10, 2011 2:00 PM" .
Поддерживаемые командлеты
StreamУправляет альтернативными потоками данных. Введите имя потока. Подстановочные знаки разрешены только в командах Get-Item для и Remove-Item на диске файловой системы.
Поддерживаемые командлеты
Игнорирует символы новой строки. Возвращает содержимое в виде одного элемента.
Поддерживаемые командлеты
ItemTypeЭтот параметр позволяет указать те элемента для создания New-Item
Доступные значения этого параметра зависят от текущего используемого поставщика.
FileSystem В диске допустимы следующие значения:
- Файл
- Каталог
- SymbolicLink
- Соединение
- HardLink
Example 5: Create a new file and copy content
This example creates a new file and copies an existing file's content into the new file.
- The Add-Content cmdlet uses the Path and Value parameters to create a new file in the current directory.
- The Get-Content cmdlet gets the contents of an existing file, CopyFromFile.txt and passes it to the Value parameter. The parentheses around the Get-Content cmdlet ensure that the command finishes before the Add-Content command begins.
- The Get-Content cmdlet displays the contents of the new file, NewFile.txt .
Пример 3. Добавление содержимого указанного файла в другой файл
В этом примере содержимое получается из файла и сохраняется в переменной. Переменная используется для добавления содержимого в другой файл.
- Командлет Get-Content получает содержимое CopyFromFile.txt и сохраняет содержимое в переменной $From .
- Командлет Add-Content обновляет CopyToFile.txt файл с помощью содержимого переменной $From .
- Командлет Get-Content отображает CopyToFile.txt.
Syntax
Удаление файлов с помощью подстановочных знаков
Эта команда удаляет все файлы в текущем каталоге с .xml расширением имени файла:
Пример 1. Добавление строки во все текстовые файлы с исключением
Этот пример добавляет значение к текстовым файлам в текущем каталоге, но исключает файлы на основе их имени.
Параметр Path указывает все .txt файлы в текущем каталоге, но параметр Exclude игнорирует имена файлов, которые соответствуют указанному шаблону. Параметр Value указывает текстовую строку, записанную в файлы.
Используйте get-Content для отображения содержимого этих файлов.
Замена содержимого файла
Эта команда заменяет содержимое Test.txt файла строкой "Test Content":
Он перезаписывает содержимое Test.txt . Можно использовать параметр value командлета New-Item , чтобы добавить содержимое в файл при его создании.
Типы, предоставляемые этим поставщиком
Файлы являются экземплярами класса System. IO. FileInfo . Каталоги являются экземплярами класса System. IO. DirectoryInfo .
Примеры
Example 1: Replace the contents of multiple files in a directory
This example replaces the content for multiple files in the current directory.
The Get-ChildItem cmdlet uses the Path parameter to list .txt files that begin with Test* in the current directory. The Set-Content cmdlet uses the Path parameter to specify the Test*.txt files. The Value parameter provides the text string Hello, World that replaces the existing content in each file. The Get-Content cmdlet uses the Path parameter to specify the Test*.txt files and displays each file's content in the PowerShell console.
Переименование каталога
Эта команда переименовывает C:\a\cc каталог в C:\a\dd :
Получение содержимого файла
Эта команда возвращает содержимое файла "Test.txt" и отображает их в консоли.
Содержимое файла можно передать другому командлету по конвейеру. Например, следующая команда считывает содержимое Test.txt файла и затем передает его в качестве входных данных командлету ConvertTo-HTML :
Можно также получить содержимое файла, указав в качестве пути к нему знак доллара ( $ ). Путь должен быть заключен в фигурные скобки из-за ограничений именования переменных. Дополнительные сведения см. в разделе about_Variables.
Создание файлов и каталогов
Перебрать содержимое файла
По умолчанию Get-Content командлет использует символ конца строки в качестве разделителя, поэтому он получает файл в виде коллекции строк, каждая из которых имеет одну строку в файле.
С помощью -Delimiter параметра можно указать альтернативный разделитель. Если в качестве его значения будут заданы символы, обозначающие конец раздела или начало следующего раздела, файл можно будет разделить на логические части.
Первая команда получает Employees.txt файл и разделяет его на разделы, каждый из которых заканчивается словами "конец записи о сотруднике", и сохраняет его в $e переменной.
Вторая команда использует нотацию массива для получения первого элемента в коллекции в $e . Он использует индекс 0, так как массивы PowerShell отсчитываются от нуля.
Дополнительные сведения о Get-Content командлете см. в разделе справки по разделу Get-Content.
Дополнительные сведения о массивах см. в разделе about_Arrays.
Outputs
None or System.String
When you use the PassThru parameter, Add-Content generates a System.String object that represents the content. Otherwise, this cmdlet does not generate any output.
Поставщик файловой системы PowerShell позволяет получать, добавлять, изменять, очищать и удалять файлы и каталоги в PowerShell.
Диски файловой системы — это иерархическое пространство имен, содержащее каталоги и файлы на компьютере. Диск файловой системы может быть логическим или физическим диском, каталогом или сопоставленным сетевым ресурсом.
Поставщик FileSystem поддерживает следующие командлеты, описанные в этой статье.
Управление содержимым файлов
Добавление содержимого в файл
Эта команда добавляет строку "тестовое содержимое" в Test.txt файл:
Существующее содержимое в Test.txt файле не удаляется.
Получение сжатых и зашифрованных файлов
Эта команда возвращает файлы в текущем каталоге, которые сжаты или зашифрованы.
Он использует -Attributes параметр с двумя значениями Compressed и Encrypted . Значения разделяются запятой , , которая представляет оператор "или".
Читайте также: