Поиск по сайту:

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.