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 для записи в файл. Файл получает то же отображаемое представление, что и терминал. Это означает, что выходные данные не могут быть идеальными для программной обработки, если только все входные объекты не являются строками.
Если необходимо указать параметры для выходных данных, используйте Out-File
вместо оператора перенаправления (>
). Дополнительные сведения о перенаправлении см. в разделе 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. Параметр Encoding преобразует выходные данные в формат ASCII . Параметр Width ограничивает каждую строку в файле 50 символами, поэтому некоторые данные могут быть усечены.
Пример 4. Использование поставщика и отправка выходных данных в файл
В этом примере показано, как использовать Out-File
командлет, если вы не используете диск поставщика файловой системы . 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
Добавляет выходные данные в конец существующего файла.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Confirm
Запрос подтверждения перед выполнением командлета.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Encoding
Указывает тип кодировки для целевого файла. Значение по умолчанию — utf8NoBOM
.
Ниже приведены допустимые значения для этого параметра.
ascii
: использует кодировку для 7-разрядной кодировки ASCII.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 также разрешает числовые идентификаторы зарегистрированных кодовых страниц (например -Encoding 1251
, ) или строковые имена зарегистрированных кодовых страниц (например -Encoding "windows-1251"
, ). Дополнительные сведения см. в документации по .NET для Encoding.CodePage.
Примечание
UTF-7* больше не рекомендуется использовать. В PowerShell 7.1 выдается предупреждение, если указать utf7
для параметра Encoding .
Type: | Encoding |
Accepted values: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | 1 |
Default value: | UTF8NoBOM |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FilePath
Указывает путь к выходному файлу.
Type: | String |
Aliases: | Path |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Force
Переопределяет атрибут только для чтения и перезаписывает существующий файл, доступный только для чтения. Параметр Force не переопределяет ограничения безопасности.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Указывает объекты, которые нужно записать в файл. Введите переменную, которая содержит объекты, или команду или выражение, которое возвращает объекты.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-LiteralPath
Указывает путь к выходному файлу. Параметр LiteralPath используется точно так же, как он типизированный. Подстановочные знаки не принимаются. Если путь содержит escape-символы, заключите его в одинарные кавычки. Одинарные кавычки предписывают PowerShell не интерпретировать какие-либо символы как escape-последовательности. Дополнительные сведения см. в разделе about_Quoting_Rules.
Type: | String |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-NoClobber
NoClobber предотвращает перезапись существующего файла и выводит сообщение о том, что файл уже существует. По умолчанию, если файл существует по указанному пути, Out-File
он перезаписывается без предупреждения.
Type: | SwitchParameter |
Aliases: | NoOverwrite |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-NoNewline
Указывает, что содержимое, записанное в файл, не заканчивается символом новой строки. Строковые представления входных объектов объединяются для формирования выходных данных. Пробелы или новые строки не вставляются между выходными строками. После последней выходной строки новая строка не добавляется.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
Показывает, что произойдет при запуске командлета. Командлет не выполняется.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Width
Задает максимальное количество символов в каждой строке выходных данных. Все остальные знаки отсекаются, а не переносятся на следующую строку. Если этот параметр не используется, ширина определяется характеристиками узла. По умолчанию для консоли PowerShell используется 80 символов. Если вы хотите управлять шириной для всех вызовов , а также операторов Out-File
перенаправления (>
и >>
), задайте $PSDefaultParameterValues['out-file:width'] = 2000
перед использованием Out-File
.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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.