Out-File (Microsoft.PowerShell.Utility)
Out-File
- Модуль:
- Microsoft.PowerShell.Utility
Отправляет вывод в файл.
Синтаксис
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. Параметр Ширина ограничивает длину каждой строки файла 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
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Confirm
Запрашивает подтверждение перед запуском командлета.
- Тип :
SwitchParameter
- Псевдонимы:
cf
- Позиция:
Именованный
- Значение по умолчанию:
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 также позволяет использовать числовые идентификаторы зарегистрированных кодовых страниц (например, -Encoding 1251) или строковые имена зарегистрированных кодовых страниц (например, -Encoding). "windows-1251"). Дополнительные сведения см. в документации .NET для Encoding.CodePage.
Начиная с PowerShell 7.4, вы можете использовать значение Ansi для параметра Encoding, чтобы передать числовой идентификатор для текущей кодовой страницы ANSI языка и региональных параметров без необходимости указывать его вручную.
Примечание
UTF-7* больше не рекомендуется использовать. Начиная с PowerShell 7.1, предупреждение выводится, если вы укажете utf7 для параметра Кодировка.
- Тип :
Кодирование
- Принятые значения:
ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
- Позиция:
1
- Значение по умолчанию:
UTF8NoBOM
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-FilePath
Указывает путь к выходному файлу.
- Тип :
String
- Псевдонимы:
Path
- Позиция:
0
- Значение по умолчанию:
None
- Необходимый:
True
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Force
Переопределяет атрибут «только для чтения» и перезаписывает существующий файл, доступный только для чтения. Параметр Force не отменяет ограничения безопасности.
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-InputObject
Указывает объекты, которые будут записаны в файл. Введите переменную, содержащую объекты, или введите команду или выражение, позволяющее получить объекты.
- Тип :
PSОбъект
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
True
- Принимайте подстановочные знаки:
False
-LiteralPath
Указывает путь к выходному файлу. Параметр LiteralPath используется точно так, как он введен. Подстановочные знаки не принимаются. Если путь содержит escape-символы, заключите его в одинарные кавычки. Одинарные кавычки сообщают PowerShell не интерпретировать никакие символы как escape-последовательности. Дополнительные сведения см. в разделе about_Quoting_Rules.
- Тип :
String
- Псевдонимы:
PSPath, LP
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
True
- Примите ввод конвейера:
True
- Принимайте подстановочные знаки:
False
-NoClobber
NoClobber предотвращает перезапись существующего файла и отображает сообщение о том, что файл уже существует. По умолчанию, если файл существует по указанному пути, Out-File перезаписывает файл без предупреждения.
- Тип :
SwitchParameter
- Псевдонимы:
NoOverwrite
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-NoNewline
Указывает, что содержимое, записанное в файл, не заканчивается символом новой строки. Строковые представления входных объектов объединяются для формирования выходных данных. Между выходными строками не вставляются пробелы или символы новой строки. После последней выходной строки новая строка не добавляется.
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-WhatIf
Показывает, что произойдет, если командлет запустится. Командлет не запускается.
- Тип :
SwitchParameter
- Псевдонимы:
wi
- Позиция:
Именованный
- Значение по умолчанию:
False
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Width
Указывает максимальное количество символов в каждой строке вывода. Любые дополнительные символы обрезаются, а не переносятся. Если этот параметр не используется, ширина определяется характеристиками хоста. По умолчанию для консоли PowerShell — 80 символов. Если вы хотите контролировать ширину всех вызовов Out-File, а также операторов перенаправления (> и >>), установите $PSDefaultParameterValues['out-file:width']=2000 перед использованием Out-File.
- Тип :
Int32
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
Входы
PSObject
В этот командлет можно передать любой объект.
Выходы
Нет
Этот командлет не возвращает никаких результатов.
Примечания
Объекты ввода автоматически форматируются так, как если бы они были в терминале, но вы можете использовать командлет Format-* для явного управления форматированием вывода в файл. Например, Get-Date | Список форматов | Выходной файл out.txt
Чтобы отправить выходные данные команды PowerShell в командлет Out-File, используйте конвейер. Альтернативно вы можете сохранить данные в переменной и использовать параметр InputObject для передачи данных в командлет Out-File.
Out-File сохраняет данные в файл, но не создает никаких выходных объектов в конвейер.
В PowerShell 7.2 добавлена возможность контролировать отображение escape-последовательностей ANSI. Вывод, оформленный в формате ANSI, передаваемый в Out-File, можно изменить на основе настройки свойства $PSStyle.OutputRendering. Дополнительные сведения см. в разделе about_ANSI_Terminals.