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


Out-File

Отправляет вывод в файл.

Синтаксис

Out-File [-FilePath] <string> [[-Кодирование] <string>] [-Append] [-Force] [-InputObject <psobject>] [-NoClobber] [-Width <int>] [-Confirm] [-WhatIf] [<CommonParameters>]

Описание

Командлет Out-File отправляет вывод в файл. Командлет Out-File можно использовать вместо оператора перенаправления (>), если нужно указать дополнительные данные с помощью параметров этого командлета.

Параметры

-Append

Записывает выходные данные в конец существующего файла, а не замещает его содержимое.

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-Кодирование <string>

Задает тип кодировки, используемой в файле. Допустимые значения: "Unicode", "UTF7", "UTF8", "UTF32", "ASCII", "BigEndianUnicode", "Default" и "OEM". По умолчанию используется кодировка "Unicode".

Значение "Default" соответствует кодировке текущей кодовой страницы ANSI.

"OEM" соответствует идентификатору кодовой страницы текущего производителя оригинального оборудования для операционной системы.

Обязательно?

false

Позиция?

2

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-FilePath <string>

Задает путь к выходному файлу.

Обязательно?

true

Позиция?

1

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-Force

Позволяет командлету перезаписать существующий файл, доступный только для чтения. Даже при использовании параметра Force командлет не может переопределить ограничения безопасности.

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-InputObject <psobject>

Указывает объекты, которые будут записаны в файл. Введите переменную, содержащую объекты, либо получающую их команду или выражение.

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

true (ByValue)

Принимать подстановочные знаки?

false

-NoClobber

Не будет перезаписывать существующий файл (то есть заменять его содержимое). По умолчанию, если файл существует по указанному пути, командлет Out-File перезаписывает файл без предупреждения. Если одновременно используются параметры Append и NoClobber, выходные данные записываются в конец существующего файла.

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-Width <int>

Указывает число знаков в каждой выходной строке. Все остальные знаки усекаются, а не переносятся на следующую строку. Если данный параметр опущен, ширина определяется характеристиками основного приложения. Значение по умолчанию для консоли Windows PowerShell равно 80 (знаков).

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-Confirm

Запрашивает подтверждение перед выполнением команды.

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-WhatIf

Описывает, что произойдет при выполнении команды, без ее фактического выполнения.

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

<CommonParameters>

Данный командлет поддерживает общие параметры -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer и -OutVariable. Дополнительные сведения см. в разделе about_Commonparameters.

Ввод и вывод

Входным типом является тип объектов, которые можно передавать командлету по конвейеру. Возвращаемым типом является тип объектов, возвращаемых командлетом.

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

System.Management.Automation.PSObject

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

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

Нет

Командлет Out-File не формирует никакого вывода.

Примечания

Командлеты Out не форматируют объекты, а только обрабатывают их и отправляют в указанное назначение для отображения. Если передать неформатированный объект в командлет Out, он перед обработкой отправит его в форматирующий командлет.

Командлеты Out не содержат параметров для указания имен или путей. Для передачи данных командлетам, содержащие слово Out (командлеты Out), используйте оператор конвейера (|), чтобы передать выходные данные команды Windows PowerShell командлету. Также можно хранить данные в переменной и использовать параметр InputObject для передачи данных в командлет. Дополнительные сведения см. в примерах.

Командлет Out-File отправляет данные, но не создает никаких объектов вывода. Если передать по конвейеру вывод командлета Out-File командлету Get-Member, командлет Get-Member сообщит, что никакие объекты не указаны.

Пример 1

C:\PS>get-process | out-file -filepath C:\Test1\process.txt

Описание
-----------
Эта команда отправляет список процессов, выполняемых на компьютере, в файл Process.txt. Если этот файл не существует, командлет Out-File создаст его. Имя параметра FilePath указывать необязательно, поэтому данную команду можно переписать как "get-process | outfile C:\Test1\process.txt".





Пример 2

C:\PS>get-process | out-file C:\Test1\process.txt -noclobber

Out-File : File C:\Test1\process.txt already exists and NoClobber was specified.
At line:1 char:23
+ get-process | out-file  <<<< process.txt -noclobber

Описание
-----------
Эта команда также отправляет список процессов в файл Process.txt, но в ней используется параметр NoClobber, который предотвращает перезапись существующего файла. При выполнении такой команды с параметром NoClobber для существующего файла будет выведено сообщение об ошибке.





Пример 3

C:\PS>$a = get-process

C:\PS> out-file -filepath C:\Test1\process.txt -inputobject $a -encoding ASCII -width 50

Описание
-----------
Эти команды отправляют список процессов, выполняемых на компьютере, в файл Process.txt. Текст имеет кодировку ASCII, чтобы его могли обрабатывать программы поиска, такие как Findstr и Grep. По умолчанию командлет Out-File использует формат Unicode.

Первая команда получает список процессов и сохраняет его в переменной $a. Вторая команда с помощью командлета Out-File отправляет список процессов в файл Process.txt. 

Параметр InputObject указывает, что ввод хранится в переменной $a. Параметр Encoding используется для преобразования вывода в формат ASCII. Параметр Width ограничивает длину каждой строки в файле 50 знаками. Так как строки вывода после 50 знаков усекаются, самый правый столбец таблицы процессов не выводится.





Пример 4

C:\PS>set-location hklm:\software

c:\PS>get-acl mycompany\mykey | out-file -filepath c:\ps\acl.txt

c:\PS>get-acl mycompany\mykey | out-file -filepath filesystem::acl.txt

Описание
-----------
Эти команды показывают, как использовать командлет Out-File в контексте, отличном от диска FileSystem. 

Первая команда делает текущим расположением раздел реестра HKLM:\Software.

Вторая и третья команды делают то же самое. Они с помощью командлета Get-Acl получают дескриптор безопасности подраздела реестра HKLM\Software\MyCompany\MyKey. Оператор конвейера передает результат командлету Out-File, который отправляет его в файл Acl.txt.

Командлет Out-File не поддерживается поставщиком реестра Windows PowerShell, поэтому в качестве значения параметра FilePath нужно указать или имя диска файловой системы (такое как "c:"), или имя поставщика с двумя двоеточиями "FileSystem::". Вторая и третья команды демонстрируют применение этих способов.





См. также

Концепции

Out-String
Out-Null
Out-Host
Out-Printer
Out-Default
Tee-Object