Out-File
Отправляет выходные данные в файл.
Синтаксис
ByPath (по умолчанию)
Out-File
[-FilePath] <string>
[[-Encoding] <Encoding>]
[-Append]
[-Force]
[-NoClobber]
[-Width <int>]
[-NoNewline]
[-InputObject <psobject>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
ByLiteralPath
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
получает список процессов, выполняемых на локальном компьютере. Объекты процесса хранятся в переменной $Procs
.
Out-File
использует параметр FilePath и создает файл в текущем каталоге с именем Process.txt. Параметр inputObject передает объекты процесса в $Procs
в файл Process.txt. Параметр кодировки преобразует выходные данные в формат ASCII. Параметр Width ограничивает каждую строку в файле до 50 символов, чтобы некоторые данные могли быть усечены.
Пример 4. Использование поставщика и отправка выходных данных в файл
В этом примере показано, как использовать командлет Out-File
, если вы не используете диск поставщика FileSystem. Используйте командлет Get-PSProvider
для просмотра поставщиков на локальном компьютере. Дополнительные сведения см. в разделе о поставщиках.
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
использует параметр пути, чтобы задать текущее расположение поставщику реестра Alias:
. Командлет Get-Location
отображает полный путь для Alias:
.
Get-ChildItem
отправляет объекты вниз конвейера в командлет Out-File
.
Out-File
использует параметр FilePath, чтобы указать полный путь и имя файла для выходных данных, C:\TestDir\AliasNames.txt. Командлет Get-Content
использует параметр пути и отображает содержимое файла в консоли 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 |
Default value: | None |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
(All)
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-Confirm
Запрашивает подтверждение перед запуском cmdlet.
Свойства параметра
Тип: | SwitchParameter |
Default value: | False |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Aliases: | cf |
Наборы параметров
(All)
Position: | Named |
Обязательно: | 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 с пометкой порядка байтов (Byte Order Mark, BOM) -
utf8NoBOM
: Кодирует в формате UTF-8 без метки порядка байтов (BOM) -
utf32
: кодирует в формате UTF-32.
Начиная с PowerShell 6.2, параметр кодировки
Начиная с PowerShell 7.4, можно использовать значение Ansi
для параметра кодировки, чтобы передать числовой идентификатор ANSI-страницы текущей культуры, не указывая его вручную.
Замечание
UTF-7* больше не рекомендуется использовать. Начиная с версии PowerShell 7.1, выводится предупреждение, если задать utf7
как параметр кодировки.
Свойства параметра
Тип: | Encoding |
Default value: | UTF8NoBOM |
Допустимые значения: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
(All)
Position: | 1 |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-FilePath
Указывает путь к выходному файлу.
Свойства параметра
Тип: | String |
Default value: | None |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Aliases: | Путь |
Наборы параметров
ByPath
Position: | 0 |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-Force
Переопределяет атрибут только для чтения и перезаписывает существующий файл только для чтения. Параметр Force не переопределяет ограничения безопасности.
Свойства параметра
Тип: | SwitchParameter |
Default value: | None |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
(All)
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-InputObject
Указывает объекты, записываемые в файл. Введите переменную, содержащую объекты или введите команду или выражение, которое получает объекты.
Свойства параметра
Тип: | PSObject |
Default value: | None |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
(All)
Position: | Named |
Обязательно: | False |
Значение из конвейера: | True |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-LiteralPath
Указывает путь к выходному файлу. Параметр LiteralPath используется точно так же, как и типизированный параметр. Подстановочные знаки не принимаются. Если путь содержит escape-символы, заключите его в одинарные кавычки. Одинарные кавычки указывают PowerShell на то, что не следует интерпретировать какие-либо символы как управляющие последовательности. Дополнительную информацию см. в разделе about_Quoting_Rules.
Свойства параметра
Тип: | String |
Default value: | None |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Aliases: | PSPath, LP |
Наборы параметров
ByLiteralPath
Position: | Named |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | True |
Значение из оставшихся аргументов: | False |
-NoClobber
NoClobber запрещает перезаписывать существующий файл и отображает сообщение о том, что файл уже существует. По умолчанию, если файл существует в указанном пути, Out-File
перезаписывает файл без предупреждения.
Свойства параметра
Тип: | SwitchParameter |
Default value: | None |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Aliases: | NoOverwrite |
Наборы параметров
(All)
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-NoNewline
Указывает, что содержимое, записанное в файл, не заканчивается новым символом. Строковые представления входных объектов объединяются для формирования выходных данных. Пробелы или новые строки не вставляются между выходными строками. Новая строка не добавляется после последней выходной строки.
Свойства параметра
Тип: | SwitchParameter |
Default value: | None |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
(All)
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-WhatIf
Показывает, что произойдет, если командлет будет запущен. Командлет не выполняется.
Свойства параметра
Тип: | SwitchParameter |
Default value: | False |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Aliases: | wi |
Наборы параметров
(All)
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-Width
Задает максимальное количество символов в каждой строке выходных данных. Все дополнительные символы усечены, не упакованы. Если этот параметр не используется, ширина определяется характеристиками узла. По умолчанию для консоли PowerShell используется 80 символов. Если вы хотите контролировать ширину для всех вызовов Out-File
, а также операторов перенаправления (>
и >>
), задайте $PSDefaultParameterValues['Out-File:Width'] = 2000
перед использованием Out-File
.
Свойства параметра
Тип: | Int32 |
Default value: | None |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
(All)
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
CommonParameters
Этот командлет поддерживает общие параметры: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction и -WarningVariable. Дополнительные сведения см. в разделе about_CommonParameters.
Входные данные
PSObject
Вы можете передать любой объект в этот cmdlet.
Выходные данные
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.