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


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 командлет, если вы не находитесь на диске поставщика 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

Добавляет выходные данные в конец существующего файла.

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

Входные данные

PSObject

Можно передать по конвейеру любой объект в Out-File.

Выходные данные

None

Out-File не создает никаких выходных данных.

Примечания

Входные объекты автоматически форматируются в том виде, в который они находятся в терминале, но для явного управления форматированием выходных данных в файл можно использовать Format-* командлет . Например Get-Date | Format-List | Out-File out.txt.

Чтобы отправить выходные данные команды PowerShell в Out-File командлет, используйте конвейер . Кроме того, можно хранить данные в переменной и использовать параметр InputObject для передачи данных в Out-File командлет .

Out-File сохраняет данные в файл, но не создает выходные объекты в конвейере.