Out-File
Отправляет выходные данные в файл.
Синтаксис
Out-File
[-FilePath] <string>
[[-Encoding] <Encoding>]
[-Append]
[-Force]
[-NoClobber]
[-Width <int>]
[-NoNewline]
[-InputObject <psobject>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Out-File
[[-Encoding] <Encoding>]
-LiteralPath <string>
[-Append]
[-Force]
[-NoClobber]
[-Width <int>]
[-NoNewline]
[-InputObject <psobject>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Описание
Командлет Out-File
отправляет выходные данные в файл. Она неявно использует систему форматирования PowerShell для записи в файл. Файл получает то же отображаемое представление, что и терминал. Это означает, что выходные данные могут не быть идеальными для программной обработки, если только все входные объекты не являются строками.
Перенаправление выходных данных команды PowerShell (командлета, функции, скрипта) с помощью оператора перенаправления (>
) функционально эквивалентно пилингу Out-File
без дополнительных параметров.
PowerShell 7.4 изменил поведение оператора перенаправления при использовании для перенаправления потока stdout собственной команды. Дополнительные сведения о перенаправлении см. в about_Redirection.
Примеры
Пример 1. Отправка выходных данных и создание файла
В этом примере показано, как отправить список процессов локального компьютера в файл. Если файл не существует, Out-File
создает файл в указанном пути.
Get-Process | Out-File -FilePath .\Process.txt
Get-Content -Path .\Process.txt
NPM(K) PM(M) WS(M) CPU(s) Id SI ProcessName
------ ----- ----- ------ -- -- -----------
29 22.39 35.40 10.98 42764 9 Application
53 99.04 113.96 0.00 32664 0 CcmExec
27 96.62 112.43 113.00 17720 9 Code
Командлет Get-Process
получает список процессов, выполняемых на локальном компьютере. Объекты Process отправляются по конвейеру командлету Out-File
. Out-File
использует параметр FilePath и создает файл в текущем каталоге с именем Process.txt. Команда Get-Content
получает содержимое из файла и отображает его в консоли PowerShell.
Пример 2. Предотвращение перезаписи существующего файла
Этот пример предотвращает перезапись существующего файла. По умолчанию Out-File
перезаписывает существующие файлы.
Get-Process | Out-File -FilePath .\Process.txt -NoClobber
Out-File : The file 'C:\Test\Process.txt' already exists.
At line:1 char:15
+ Get-Process | Out-File -FilePath .\Process.txt -NoClobber
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Командлет Get-Process
получает список процессов, выполняемых на локальном компьютере. Объекты Process отправляются по конвейеру командлету Out-File
. Out-File
использует параметр FilePath и пытается записать в файл в текущем каталоге с именем Process.txt. Параметр NoClobber запрещает перезаписывать файл и отображает сообщение о том, что файл уже существует.
Пример 3. Отправка выходных данных в файл в формате ASCII
В этом примере показано, как кодировать выходные данные с определенным типом кодирования.
$Procs = Get-Process
Out-File -FilePath .\Process.txt -InputObject $Procs -Encoding ASCII -Width 50
Командлет Get-Process
получает список процессов, выполняемых на локальном компьютере. Объекты Process хранятся в переменной $Procs
. Out-File
использует параметр FilePath и создает файл в текущем каталоге с именем Process.txt. Параметр InputObject передает объекты процесса в $Procs
файл Process.txt. Параметр кодирования преобразует выходные данные в формат ASCII . Параметр Width ограничивает каждую строку в файле 50 символами, чтобы некоторые данные могли быть усечены.
Пример 4. Использование поставщика и отправка выходных данных в файл
В этом примере показано, как использовать Out-File
командлет, если вы не используете диск поставщика FileSystem . Get-PSProvider
Используйте командлет для просмотра поставщиков на локальном компьютере. Дополнительные сведения см. в about_Providers.
PS> Set-Location -Path Alias:
PS> Get-Location
Path
----
Alias:\
PS> Get-ChildItem | Out-File -FilePath C:\TestDir\AliasNames.txt
PS> Get-Content -Path C:\TestDir\AliasNames.txt
CommandType Name
----------- ----
Alias % -> ForEach-Object
Alias ? -> Where-Object
Alias ac -> Add-Content
Alias cat -> Get-Content
Команда Set-Location
использует параметр Path для задания текущего расположения поставщику Alias:
реестра. Командлет Get-Location
отображает полный путь для Alias:
.
Get-ChildItem
отправляет объекты вниз конвейера командлету Out-File
. Out-File
использует параметр FilePath для указания полного пути и имени файла для выходных данных C:\TestDir\AliasNames.txt. Командлет Get-Content
использует параметр Path и отображает содержимое файла в консоли PowerShell.
Пример 5. Настройка ширины выходных данных файла для всей области
В этом примере используется $PSDefaultParameterValues
для задания Width
параметра для всех вызовов и операторов Out-File
перенаправления (>
и >>
) значение 2000. Это гарантирует, что везде в текущей области, в которую вы выводите форматированные данные таблицы в файл, PowerShell использует ширину строки 2000 вместо ширины строки, определенной шириной консоли узла PowerShell.
function DemoDefaultOutFileWidth() {
try {
$PSDefaultParameterValues['out-file:width'] = 2000
$logFile = "$pwd\logfile.txt"
Get-ChildItem Env:\ > $logFile
Get-Service -ErrorAction Ignore |
Format-Table -AutoSize |
Out-File $logFile -Append
Get-Process | Format-Table Id,SI,Name,Path,MainWindowTitle >> $logFile
}
finally {
$PSDefaultParameterValues.Remove('out-file:width')
}
}
DemoDefaultOutFileWidth
Дополнительные сведения см. в $PSDefaultParameterValues
about_Preference_Variables.
Параметры
-Append
Добавляет выходные данные в конец существующего файла.
Тип: | SwitchParameter |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Confirm
Запрос подтверждения перед выполнением командлета.
Тип: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Encoding
Указывает тип кодировки для целевого файла. Значение по умолчанию — utf8NoBOM
.
Допустимые значения для этого параметра приведены следующим образом:
ascii
: использует кодировку для набора символов ASCII (7-разрядная версия).ansi
: использует кодировку для кодовой страницы ANSI текущего языка и региональных параметров. Этот параметр добавлен в PowerShell 7.4.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 "windows-1251"
-Encoding 1251
). Дополнительные сведения см. в документации по .NET для Encoding.CodePage.
Начиная с PowerShell 7.4, можно использовать Ansi
значение параметра кодировки для передачи числового идентификатора для кодовой страницы ANSI текущего языка и региональных параметров без необходимости указывать его вручную.
Примечание.
UTF-7* больше не рекомендуется использовать. По состоянию на PowerShell 7.1 предупреждение записывается при указании utf7
параметра кодирования .
Тип: | Encoding |
Допустимые значения: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | 1 |
Default value: | UTF8NoBOM |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-FilePath
Указывает путь к выходному файлу.
Тип: | String |
Aliases: | Path |
Position: | 0 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Force
Переопределяет атрибут только для чтения и перезаписывает существующий файл только для чтения. Параметр Force не переопределяет ограничения безопасности.
Тип: | SwitchParameter |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-InputObject
Указывает объекты, которые нужно записать в файл. Введите переменную, которая содержит объекты, или команду или выражение, которое возвращает объекты.
Тип: | PSObject |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-LiteralPath
Указывает путь к выходному файлу. Параметр LiteralPath используется точно так же, как он типизированный. Подстановочные знаки не принимаются. Если путь содержит escape-символы, заключите его в одинарные кавычки. Одинарные кавычки говорят PowerShell не интерпретировать какие-либо символы как escape-последовательности. Дополнительные сведения см. в about_Quoting_Rules.
Тип: | String |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-NoClobber
NoClobber запрещает перезаписывать существующий файл и отображает сообщение о том, что файл уже существует. По умолчанию, если файл существует в указанном пути, Out-File
перезаписывает файл без предупреждения.
Тип: | SwitchParameter |
Aliases: | NoOverwrite |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-NoNewline
Указывает, что содержимое, записанное в файл, не заканчивается новым символом. Строковые представления входных объектов объединяются для формирования выходных данных. Пробелы или новые строки не вставляются между выходными строками. Новая строка не добавляется после последней выходной строки.
Тип: | SwitchParameter |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-WhatIf
Показывает, что произойдет при запуске командлета. Командлет не выполняется.
Тип: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Width
Задает максимальное количество символов в каждой строке выходных данных. Все остальные знаки отсекаются, а не переносятся на следующую строку. Если этот параметр не используется, ширина определяется характеристиками узла. По умолчанию для консоли PowerShell используется 80 символов. Если вы хотите контролировать ширину для всех вызовов, а также операторов Out-File
перенаправления (>
и >>
), задайте $PSDefaultParameterValues['out-file:width'] = 2000
перед использованием Out-File
.
Тип: | Int32 |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
Входные данные
Вы можете передать любой объект в этот командлет.
Выходные данные
None
Этот командлет не возвращает выходные данные.
Примечания
Входные объекты автоматически форматируются, так как они будут находиться в терминале, но можно использовать Format-*
командлет для явного управления форматированием выходных данных в файле. Например: Get-Date | Format-List | Out-File out.txt
Чтобы отправить выходные данные команды PowerShell командлету Out-File
, используйте конвейер. Кроме того, можно хранить данные в переменной и использовать параметр InputObject для передачи данных командлету Out-File
.
Out-File
сохраняет данные в файл, но не создает выходные объекты в конвейере.
PowerShell 7.2 добавила возможность управлять отображением escape-последовательностей ANSI. Выходные данные, украшенные ANSI, которые передаются Out-File
, можно изменить на основе параметра $PSStyle.OutputRendering
свойства. Дополнительные сведения см. в about_ANSI_Terminals.
Связанные ссылки
PowerShell