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


Out-File

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

Синтаксис

ByPath (По умолчанию)

Out-File
    [-FilePath] <string>
    [[-Encoding] <string>]
    [-Append]
    [-Force]
    [-NoClobber]
    [-Width <int>]
    [-NoNewline]
    [-InputObject <psobject>]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

ByLiteralPath

Out-File
    [[-Encoding] <string>]
    -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 получает список процессов, выполняемых на локальном компьютере. Объекты процесса хранятся в переменной $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

Указывает тип кодирования для целевого файла. Значение по умолчанию — unicode.

Допустимые значения для этого параметра приведены следующим образом:

  • ascii Использует набор символов ASCII (7-разрядный).
  • bigendianunicode использует UTF-16 с порядком байтов "старший байт первым".
  • default Использует кодировку, соответствующую активной кодовой странице системы (обычно ANSI).
  • oem Использует кодировку, соответствующую текущей кодовой странице OEM системы.
  • string То же, что и unicode.
  • unicode использует UTF-16 с младшим порядком байтов.
  • unknown То же, что и unicode.
  • utf7 использует UTF-7.
  • utf8 Использует UTF-8.
  • utf32 использует UTF-32 с маленьким порядком байтов.

Свойства параметров

Тип:String
Default value:Unicode
Допустимые значения:ASCII, BigEndianUnicode, Default, OEM, String, Unicode, Unknown, UTF7, UTF8, UTF32
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:1
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-FilePath

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

Свойства параметров

Тип:String
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

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

Наборы параметров

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 сохраняет данные в файл, но не создает выходные объекты в конвейере.