Powershell вывести файл на экран
Обычно для получения содержимого текстовых файлов в PowerShell используется командлет Get-Content. Например для того, чтобы вывести файл file.txt на экран, надо выполнить такую команду:
Это наиболее распространенный, но не единственный способ. Получить содержимое файла можно, просто задав в качестве имени переменной путь к файлу. Например такая команда выдаст тот же результат, что и предыдущая:
Конечно всегда полезно узнать что-то новое, но привел я этот способ вовсе не для общего развития. Дело в том, что при его использовании чтение файла осуществляется гораздо быстрее, при этом потребляя меньше ресурсов. Для наглядности проведем небольшой эксперимент — возьмем файл и считаем его в переменную двумя разными способами, при этом замерив время работы и потребление памяти. Для измерения времени выполнения команды используем командлет Measure-Command.
Сначала замерим исходные данные. Размер файла составляет 65Мб, потребление памяти процессом PowerShell в простое около 66 Мб.
Затем считаем содержимое файла в переменную с помощью Get-Content и измерим время работы командой:
Команда отработала за 5,5 секунд, потребление памяти составило 1079784Кб (≈1Гб).
Теперь выполним чтение файла альтернативным способом, командой:
В этом случае для работы команды потребовалось всего 0,3 секунды и 233508Кб (≈233,5Мб) памяти.
Как видите, во втором случае скорость работы на порядок выше, а потребление памяти на порядок ниже. И чем размер файла больше, тем заметнее будет разница в производительности, так что для чтения файлов большого размера второй способ предпочтительнее.
У данного способа есть некоторые особенности. Во первых, путь к файлу не должен быть в кавычках, даже при наличии в нем пробелов. А также в пути к файлу нельзя использовать подстановочные символы или переменные. Например нельзя написать так:
Т.е. этот способ не позволяет считать сразу несколько файлов, в отличие от Get-Content.
The Out-File cmdlet sends output to a file. It implicitly uses PowerShell's formatting system to write to the file. The file receives the same display representation as the terminal. This means that the output may not be ideal for programmatic processing unless all input objects are strings. When you need to specify parameters for the output, use Out-File rather than the redirection operator ( > ). For more information about redirection, see about_Redirection.
Outputs
None
Out-File does not generate any output.
Example 4: Use a provider and send output to a file
This example shows how to use the Out-File cmdlet when you are not in a FileSystem provider drive. Use the Get-PSProvider cmdlet to view the providers on your local computer. For more information, see about_Providers.
The Set-Location command uses the Path parameter to set the current location to the registry provider Alias: . The Get-Location cmdlet displays the complete path for Alias: . Get-ChildItem sends objects down the pipeline to the Out-File cmdlet. Out-File uses the FilePath parameter to specify the complete path and filename for the output, C:\TestDir\AliasNames.txt. The Get-Content cmdlet uses the Path parameter and displays the file's content in the PowerShell console.
Примеры
Пример 4. Использование поставщика и отправка выходных данных в файл
В этом примере показано, как использовать Out-File командлет, если вы не находитесь на диске поставщика FileSystem . Get-PSProvider Используйте командлет для просмотра поставщиков на локальном компьютере. Дополнительные сведения см. в разделе about_Providers.
Команда Set-Location использует параметр Path , чтобы задать текущее расположение поставщику Alias: реестра. Командлет Get-Location отображает полный путь для Alias: . Get-ChildItem отправляет объекты вниз по конвейеру Out-File в командлет. Out-File использует параметр FilePath , чтобы указать полный путь и имя файла для выходных данных ,C:\TestDir\AliasNames.txt. Командлет Get-Content использует параметр Path и отображает содержимое файла в консоли PowerShell.
Out-Host
Командлет Out-Host служит для вывода данных на экран. Например:
Get-Process powershell | Out-Host
Впрочем, добавлять Out-Host в конец команды совсем необязательно. В конце конвейера по умолчанию находится командлет Out-Default, который и перенаправляет все в Out-Host. Т.е. предыдущая команда эквивалентна команде:
Get-Process powershell | Out-Default
которая в свою очередь эквивалентна команде:
На самом деле механизм вывода еще запутаннее. Как вы помните, результатом работы PowerShell являются объекты. Out-командлеты не умеют работать с любыми объектами, а только со специальным типом объектов форматирования, поэтому при получении объекта вызывают один из командлетов форматирования (Format-*). Format-командлет предоставляет Out-командлету объекты форматирования, описывающие порядок построения выходных данных, а Out-командлет отправляет их в нужное устройство. Т.е. при выполнении команды:
в действительности отрабатывает команда:
Get-Process powershell | Format-Table | Out-Host
Хотя добавлять Out-Host в конец команды необязательно, но в некоторых случаях удобно. К примеру он имеет ключ Paging, с помощью которого можно организовать постраничный вывод:
Get-Process | Out-Host -Paging
Ширина выходных данных при записи в файл
При записи в файл с помощью Out-File или операторов перенаправления PowerShell преобразует выходные данные таблицы в файл на основе ширины консоли, в которой она выполняется. Например, при записи выходных данных таблицы в файл с помощью команды, например Get-ChildItem Env:\Path > path.log в системе, в которой ширина консоли равна 80 столбцам, выходные данные в файле усекаются до 80 символов:
Учитывая, что ширина консоли может быть задана произвольным образом на системах, где выполняется сценарий, вы можете предпочесть, чтобы формат PowerShell был выводить файлы таблицы в соответствии с заданной заданной шириной.
Out-File Командлет предоставляет параметр Width , позволяющий задать ширину для вывода в таблицу. Вместо того, чтобы добавлять -Width 2000 все при вызове Out-File , можно использовать $PSDefaultParameterValues переменную, чтобы задать это значение для всех использований Out-File командлета в скрипте. А поскольку операторы перенаправления ( > и >> ) фактически являются псевдонимами для Out-File , установка Out-File:Width параметра для всего скрипта влияет также на ширину форматирования для операторов перенаправления. Добавьте следующую команду в начало скрипта, чтобы задать Out-File:Width для всего скрипта:
Увеличение ширины выходных данных приведет к увеличению потребления памяти при регистрации выходных данных в табличном формате. Если вы записываете в файл большой объем табличных данных и вы уверены, что можете сделать это с меньшей шириной, используйте меньшую ширину.
В некоторых случаях, например Get-Service в выходных данных, чтобы использовать дополнительную ширину, необходимо передать выходные данные Format-Table -AutoSize перед выводом в файл.
Дополнительные сведения о $PSDefaultParameterValues см. в разделе about_Preference_Variables.
Out-GridView
Командлет Out-GridView выводит данные в виде графической таблицы, в которой их можно отфильтровать и отсортировать по нужному признаку. Для наглядности можно указать ключ Title, который будет отображаться в заголовке:
Get-Process | Out-GridView -Title processes
Начиная стретьей версии PowerShell Out-GridView поддерживает ключ PassThru, позволяющий передать полученные данные дальше по конвейеру. Например, можно вывести список процессов, в графической оснастке отобрать нужные и передать их командлету Stop-Process, который остановит выбранные процессы:
Get-Process | Out-GridView -PassThru | Stop-Process
Примечания
Операторы перенаправления, которые не добавляют данные ( > и n> ) перезаписывают текущее содержимое указанного файла без предупреждения.
Однако если файл доступен только для чтения, является скрытым или системным файлом, перенаправление завершается ошибкой. Операторы добавления перенаправления ( >> и n>> ) не записывают в файл, доступный только для чтения, но добавляют содержимое в системный или скрытый файл.
Для принудительного перенаправления содержимого в скрытый или системный файл только для чтения используйте Out-File командлет со своим Force параметром.
При записи в файлы операторы перенаправления используют UTF8NoBOM кодировку. Если файл имеет другую кодировку, выходные данные могут быть неправильно отформатированы. Для записи в файлы с другой кодировкой используйте Out-File командлет с его Encoding параметром.
Примечания
Out-File сохраняет данные в файл, но не создает выходные объекты в конвейере.
Объясняется, как перенаправлять выходные данные из PowerShell в текстовые файлы.
Out-String
Командлет Out-String преобразует входные данные в массив строк. По сути Out-String преобразует объекты PowerShell в строки, с которыми дальше можно работать как с обычным текстом (форматировать, производить поиск и т.п.).
Для примера выведем процесс, сохраним его в переменную $a и посмотрим тип данных:
$a = Get-Process powershell
$a.GetType()
Затем скормим содержимое Out-String а вывод сохраним в переменную $b:
$b = $a | Out-String
$b.Get-Type()
Как видно из примера, на входе Out-String тип данных Process, а на выходе String.
Out-String принципиально отличается от остальных out-командлетов. Поскольку обычные out-командлеты работают с конечным результатом предыдущих команд, то сами они не производят никаких выходных данных. Именно поэтому out-командлет обычно ставится последним в командной строке, ведь после него в конвейере не остается ничего, с чем могут работать другие командлеты.
В отличие от них Out-String принимает объекты, преобразует их в массив строк и передает дальше по конвейеру. По умолчанию данные накапливаются и возвращаются одной строкой, но с помощью ключа Stream можно указать вывод по отдельной строке для каждого объекта.
Для примера выведем список системных служб со всеми свойствами и отформатируем его в виде таблицы:
Get-Service | Format-Table -Property * -AutoSize
Поскольку ширина консоли граничена 80 символами, то большинство данных будет обрезано, что не очень здорово.
Чтобы не обрезать вывод, направим его в Out-String и увеличим ширину:
Get-Service | Format-Table -Property * -AutoSize | Out-String -Width 1024
Теперь все данные попали на экран, но все равно выглядит не очень.
Исправим положение, передав вывод Out-String командлету Out-File:
Get-Service | Format-Table -Property * -AutoSize | Out-String -Width 1024 | Out-File service.txt
На выходе получаем файл с таблицей нужной ширины, а для просмотра есть полоса прокрутки. Таким образом можно создавать и просматривать таблицы практически любой ширины.
Out-Null
Командлет Out-Null используется в том случае, если выходные данные отображать не нужно. Он отправляет полученные данные в устройство NULL, т.е. удаляет их. Для примера возьмем такую команду:
$process = Get-WmiObject win32_process -Filter ″Name = ′Notepad.exe′″
$process.Terminate()
Помимо основного действия (остановка процесса) она выводит много лишней информации. Чтобы избавится от нее, отправим вывод в Out-Null, например так:
Параметры
Добавляет выходные данные в конец существующего файла. Если кодировка не указана, командлет использует кодировку по умолчанию. Эта кодировка может не соответствовать кодировке целевого файла. Это то же поведение, что и оператор перенаправления ( >> ).
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Запрос подтверждения перед выполнением командлета.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Указывает тип кодировки для целевого файла. Значение по умолчанию — 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 с порядком байтов с маленьким порядком байтов.
Указывает путь к выходному файлу.
Type: | String |
Position: | 0 |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Переопределяет атрибут только для чтения и перезаписывает существующий файл только для чтения. Параметр Force не переопределяет ограничения безопасности.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Указывает объекты, которые нужно записать в файл. Введите переменную, которая содержит объекты, или команду или выражение, которое возвращает объекты.
Type: | PSObject |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Указывает путь к выходному файлу. Параметр LiteralPath используется точно так же, как он вводится. Подстановочные знаки не принимаются. Если путь содержит escape-символы, заключите его в одинарные кавычки. Одинарные кавычки сообщают PowerShell, что никакие символы не интерпретируются как escape-последовательности. Дополнительные сведения см. в разделе about_Quoting_Rules.
Type: | String |
Aliases: | PSPath |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Type: | SwitchParameter |
Aliases: | NoOverwrite |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Указывает, что содержимое, записанное в файл, не заканчивается символом новой строки. Строковые представления входных объектов объединяются для формирования выходных данных. Пробелы или новые строки не вставляются между выходными строками. Новая строка не добавляется после последней выходной строки.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Показывает, что произойдет при запуске командлета. Командлет не выполняется.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Указывает количество символов в каждой строке выходных данных. Все остальные знаки отсекаются, а не переносятся на следующую строку. Если этот параметр не используется, ширина определяется характеристиками узла. По умолчанию для консоли PowerShell используется 80 символов. Если вы хотите управлять шириной для всех вызовов, а также операторов Out-File перенаправления ( > и >> ), задайте $PSDefaultParameterValues['out-file:width'] = 2000 перед использованием Out-File .
Type: | Int32 |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Вы можете передать любой объект в Out-File .
Examples
Пример 2. Предотвращение перезаписи существующего файла
Этот пример предотвращает перезапись существующего файла. По умолчанию Out-File перезаписывает существующие файлы.
Example 3: Send output to a file in ASCII format
This example shows how to encode output with a specific encoding type.
The Get-Process cmdlet gets the list of processes running on the local computer. The Process objects are stored in the variable, $Procs . Out-File uses the FilePath parameter and creates a file in the current directory named Process.txt. The InputObject parameter passes the process objects in $Procs to the file Process.txt. The Encoding parameter converts the output to ASCII format. The Width parameter limits each line in the file to 50 characters so some data might be truncated.
Out-File
Командлет Out-File перенаправляет выходные данные в указанный файл, например:
Get-Process powershell | Out-File proc.txt
По умолчанию данные в файле перезаписываются. Запретить перезапись существующего файла можно, указав ключ NoClobber, а если необходимо дописывать данные в существующий файл, то можно использовать ключ Append, который добавляет данные в конец файла:
Get-Process powershell | Out-File proc.txt -Append
Для вывода в файл можно использовать сокращенный синтаксис. Например для записи:
Get-Process powershell >proc.txt
или для добавления в конец файла:
Get-Process powershell >>proc.txt
Inputs
You can pipe any object to Out-File .
Пример 5. Отключение всех данных Write-Host и информационных потоков
В этом примере подавляются все данные потока информации. Дополнительные сведения о командлетах информационного потока см. в статье Write-Host и Write-Information .
Операторы перенаправления PowerShell
Ниже приведены операторы перенаправления PowerShell, где n представляет номер потока. Если поток не указан, по умолчанию используется поток Success ( 1 ).
Parameters
Adds the output to the end of an existing file.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Prompts you for confirmation before running the cmdlet.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies the type of encoding for the target file. The default value is utf8NoBOM .
The acceptable values for this parameter are as follows:
- ascii : Uses the encoding for the ASCII (7-bit) character set.
- bigendianunicode : Encodes in UTF-16 format using the big-endian byte order.
- bigendianutf32 : Encodes in UTF-32 format using the big-endian byte order.
- oem : Uses the default encoding for MS-DOS and console programs.
- unicode : Encodes in UTF-16 format using the little-endian byte order.
- utf7 : Encodes in UTF-7 format.
- utf8 : Encodes in UTF-8 format.
- utf8BOM : Encodes in UTF-8 format with Byte Order Mark (BOM)
- utf8NoBOM : Encodes in UTF-8 format without Byte Order Mark (BOM)
- utf32 : Encodes in UTF-32 format.
UTF-7* is no longer recommended to use. As of PowerShell 7.1, a warning is written if you specify utf7 for the Encoding parameter.
Type: | Encoding |
Accepted values: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | 1 |
Default value: | UTF8NoBOM |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies the path to the output file.
Type: | String |
Aliases: | Path |
Position: | 0 |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Overrides the read-only attribute and overwrites an existing read-only file. The Force parameter does not override security restrictions.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies the objects to be written to the file. Enter a variable that contains the objects or type a command or expression that gets the objects.
Type: | PSObject |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Specifies the path to the output file. The LiteralPath parameter is used exactly as it is typed. Wildcard characters are not accepted. If the path includes escape characters, enclose it in single quotation marks. Single quotation marks tell PowerShell not to interpret any characters as escape sequences. For more information, see about_Quoting_Rules.
Type: | String |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
NoClobber prevents an existing file from being overwritten and displays a message that the file already exists. By default, if a file exists in the specified path, Out-File overwrites the file without warning.
Type: | SwitchParameter |
Aliases: | NoOverwrite |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies that the content written to the file does not end with a newline character. The string representations of the input objects are concatenated to form the output. No spaces or newlines are inserted between the output strings. No newline is added after the last output string.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Shows what would happen if the cmdlet runs. The cmdlet is not run.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies the number of characters in each line of output. Any additional characters are truncated, not wrapped. If this parameter is not used, the width is determined by the characteristics of the host. The default for the PowerShell console is 80 characters. If you want to control the width for all invocations of Out-File as well as the redirection operators ( > and >> ), set $PSDefaultParameterValues['out-file:width'] = 2000 before using Out-File .
Type: | Int32 |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Example 2: Prevent an existing file from being overwritten
This example prevents an existing file from being overwritten. By default, Out-File overwrites existing files.
The Get-Process cmdlet gets the list of processes running on the local computer. The Process objects are sent down the pipeline to the Out-File cmdlet. Out-File uses the FilePath parameter and attempts to write to a file in the current directory named Process.txt. The NoClobber parameter prevents the file from being overwritten and displays a message that the file already exists.
Example 1: Send output and create a file
This example shows how to send a list of the local computer's processes to a file. If the file does not exist, Out-File creates the file in the specified path.
The Get-Process cmdlet gets the list of processes running on the local computer. The Process objects are sent down the pipeline to the Out-File cmdlet. Out-File uses the FilePath parameter and creates a file in the current directory named Process.txt. The Get-Content command gets content from the file and displays it in the PowerShell console.
Примеры
Пример 1. Отправка выходных данных и создание файла
Командлет Get-Process получает список процессов, выполняемых на локальном компьютере. Объекты Process отправляются в конвейер Out-File в командлет. Out-File использует параметр FilePath и создает файл в текущем каталоге с именем Process.txt. Команда Get-Content получает содержимое из файла и отображает его в консоли PowerShell.
Пример 6. Отображение влияния настроек действий
Переменные и параметры настройки действия могут изменять содержимое, записываемое в определенный поток. Скрипт в этом примере показывает, как значение $ErrorActionPreference влияет на то, что записывается в поток ошибок .
При выполнении этого скрипта выводится запрос, когда $ErrorActionPreference для Inquire параметра задано значение.
При изучении файла журнала мы увидим следующее:
Пример 3. Отправка выходных данных в файл в формате ASCII
В этом примере показано, как кодировать выходные данные с определенным типом кодирования.
Командлет Get-Process получает список процессов, выполняемых на локальном компьютере. Объекты Process хранятся в переменной $Procs . Out-File использует параметр FilePath и создает файл в текущем каталоге с именем Process.txt. Параметр InputObject передает объекты процесса в $Procs файл Process.txt. Параметр кодирования преобразует выходные данные в формат ASCII . Параметр Width ограничивает каждую строку в файле до 50 символов, чтобы некоторые данные могли быть усечены.
Example 5: Set file output width for entire scope
This example uses $PSDefaultParameterValues to set the Width parameter for all invocations of Out-File and the redirection operartors ( > and >> ) to 2000. This is an easy way to ensure that everywhere in a scope you output table formatted data to file, PowerShell will use a line width of 2000 instead of a line width determined by the PowerShell host's console width.
For more information about $PSDefaultParameterValues , see about_Preference_Variables.
Потенциальная путаница с операторами сравнения
> Оператор не следует путать с оператором сравнения " больше " (часто обозначается как > в других языках программирования).
В зависимости от сравниваемых объектов выходные данные > могут выглядеть правильными (поскольку 36 не превышает 42).
Однако проверка локальной файловой системы может видеть, что файл с именем 42 был записан с содержимым 36 .
Попытка использовать обратные сравнения < (меньше) приводит к системной ошибке:
Значение, -lt Если числовое сравнение является обязательной операцией и -gt должно использоваться. Дополнительные сведения см. в описании -gt оператора в about_Comparison_Operators.
Обычно в процессе работы PowerShell генерируются некоторые выходные данные. Для вывода этих данных существуют специальные Out-командлеты (командлеты, название которых начинается с Out-). Когда выполняемая команда PowerShell возвращает данные, они передаются по конвейеру на вход Out-командлета, который обрабатывает их и отправляет в устройство вывода (на экран, в файл, на принтер и т.п.).
Для просмотра этих командлетов выполним команду:
Get-Command -Verb Out
Подробное описание
Для перенаправления выходных данных можно использовать следующие методы:
Out-File Используйте командлет, который отправляет выходные данные команды в текстовый файл. Как правило, командлет используется Out-File , когда необходимо использовать параметры, такие как Encoding , Force Width , или NoClobber .
Tee-Object Используйте командлет, который отправляет выходные данные команды в текстовый файл и отправляет его в конвейер.
Используйте операторы перенаправления PowerShell. Использование оператора перенаправления с целевым объектом файла функционально эквивалентно конвейеру Out-File без дополнительных параметров.
Дополнительные сведения о потоках см. в разделе about_Output_Streams.
Перенаправляемые выходные потоки
PowerShell поддерживает перенаправление следующих выходных потоков.
В PowerShell также присутствует поток хода выполнения , но он не поддерживает перенаправление.
Потоки успехов и ошибок похожи на потоки stdout и stderr других оболочек. Однако stdin не подключен к конвейеру PowerShell для ввода данных.
Пример 2. Отправка всех успешных данных потока в файл
В этом примере все успешные потоковые данные отправляются в файл с именем script.log .
Выходные данные
Нет
Out-File не создает выходные данные.
Пример 4. перенаправление всех потоков в файл
Этот пример отправляет все выходные данные из скрипта, вызываемого script.ps1 в файл с именем script.log
Notes
Input objects are automatically formatted as they would be in the terminal, but you can use a Format-* cmdlet to explicitly control the formatting of the output to the file. For example, Get-Date | Format-List | Out-File out.txt
To send a PowerShell command's output to the Out-File cmdlet, use the pipeline. Alternatively, you can store data in a variable and use the InputObject parameter to pass data to the Out-File cmdlet.
Out-File saves data to a file but it does not produce any output objects to the pipeline.
Командлет Out-File отправляет выходные данные в файл. Она неявно использует систему форматирования PowerShell для записи в файл. Файл получает то же отображаемое представление, что и терминал. Это означает, что выходные данные могут не быть идеальными для программной обработки, если все входные объекты не являются строками. Если необходимо указать параметры для выходных данных, используйте Out-File вместо оператора перенаправления ( > ). Дополнительные сведения о перенаправлении см. в about_Redirection.
Пример 3. Передача в файл успешных, предупреждающих и ошибочных потоков
В этом примере показано, как можно комбинировать операторы перенаправления для достижения желаемого результата.
- 3>&1 перенаправляет поток предупреждений в поток успешного выполнения .
- 2>&1 перенаправляет поток ошибок в поток успешного выполнения (который также включает все данные потока предупреждений ).
- > перенаправляет поток успешного выполнения (который теперь содержит потоки предупреждений и ошибок ) в файл с именем C:\temp\redirection.log ).
Пример 5. Настройка ширины выходных данных файла для всей области
В этом примере используется $PSDefaultParameterValues для задания Width параметра для всех вызовов и операрторов Out-File перенаправления ( > и >> ) значение 2000. Это простой способ убедиться, что в любой точке области, в которую вы выводите форматированные данные в файл, PowerShell будет использовать ширину строки 2000 вместо ширины строки, определяемой шириной консоли узла PowerShell.
Дополнительные сведения см. в $PSDefaultParameterValues разделе about_Preference_Variables.
Пример 1. ошибки перенаправления и выходные данные в файл
Этот пример выполняется dir на одном элементе, который будет выполнен, и один из которых будет иметь ошибку.
Он использует 2>&1 для перенаправления потока ошибок в поток успешного выполнения и > отправки результирующего потока успешного выполнения в файл с именем. dir.log
Out-Printer
Командлет Out-Printer перенаправляет вывод на принтер. Например:
Get-Service | Format-Table -Property * -AutoSize | Out-File service.txt -Width 1024
Get-Content service.txt | Out-Printer
Вывод отправляется на принтер, заданный в системе по умолчанию. Для указания альтернативного принтера можно использовать ключ Name.
Читайте также: