Поделиться через


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, параметр кодировки также позволяет использовать числовые идентификаторы зарегистрированных кодовых страниц (например, ) или строковые имена зарегистрированных кодовых страниц (например, ). Дополнительные сведения см. в документации .NET для Encoding.CodePage.

Начиная с 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.