Перенаправление вывода PowerShell в файл с помощью Out-File: Полное руководство

Если вам нужна команда PowerShell, которая может сохранить вывод в текстовый файл, у вас повезло. Вы собираетесь узнать, как использовать команду Out-File PowerShell вместе с ее популярным параметром Out-File -Append тоже!

Как работает Out-File?

Эта команда PowerShell проста по своей природе; ее единственная цель – сохранить полученный вывод и сохранить его в текстовом файле.

Она была разработана для замены оператора перенаправления стандартного вывода (>). Даже еще со времен DOS мы могли перенаправлять вывод в файл. Эта команда – это способ PowerShell сделать это.

Команда Out-File обычно используется в конце конвейера PowerShell. Ее единственная цель – отправить необработанный вывод непосредственно в текстовый файл без каких-либо ограничений. Есть минимальные способы настроить, как этот вывод записывается.

Отправка вывода в файл

Допустим, у вас есть скрипт, который возвращает список всех служб Windows на вашем компьютере. Когда вы запускаете Get-Service, вы получите все объекты, которые можете ожидать на консоли.

Но, возможно, вам хотелось бы сохранить этот вывод в текстовый файл. Команда Out-File – отличный способ сделать это. Вы можете использовать ее, передав почти что угодно через конвейер.

Вы можете видеть ниже, что вывод Get-Service был отправлен на командлет, который создал текстовый файл под названием Services.txt, содержащий точно тот же вывод, что вы видите в консоли.

PS> Get-Service | Out-File -FilePath C:\Services.txt
PS> Get-Content C:\Services.txt
Status   Name               DisplayName

Stopped  AJRouter           AllJoyn Router Service
Stopped  ALG                Application Layer Gateway Service
Stopped  AppIDSvc           Application Identity
Stopped  Appinfo            Application Information
Stopped  AppMgmt            Application Management
<SNIP>

Добавление в файл

По умолчанию он перезаписывает все в текстовом файле, указанном с помощью параметра FilePath. Однако вы можете изменить это поведение, используя параметр Append.

Возможно, вы накапливаете вывод консоли в файле и хотели бы добавлять текст в файл, а не перезаписывать его. Параметр Append – ваш лучший друг.

Используя параметр Out-File -Append, вы можете видеть ниже, что если вы его не используете, файл C:\File.txt будет перезаписан. Но как только вы добавите параметр Append, вывод будет добавлен в конец файла.

PS> 'foo' | Out-File -FilePath C:\File.txt
PS> Get-Content -Path C:\File.txt
foo
PS> 'foo' | Out-File -FilePath C:\File.txt
PS> Get-Content C:\File.txt
foo
PS> 'foo' | Out-File -FilePath C:\File.txt -Append
PS> Get-Content C:\File.txt
foo foo

Изменение вывода

По умолчанию этот командлет пытается воспроизвести то, что показано в консоли, но есть несколько способов его изменить. Например, у командлета есть параметр NoNewLine, который просто удаляет все символы новой строки.

PS> Get-Service | Out-File -FilePath C:\Services.txt -NoNewline
PS> Get-Content C:\Services.txt
Status   Name               DisplayName
------   ----               -----------
Stopped  AJRouter           AllJoyn Router Service
Stopped  ALG                Application La

Или вы можете обрезать текст на каждой строке до определенного количества символов с помощью параметра Width.

PS> Get-Service | Out-File -FilePath C:\Services.txt -Width 30 
PS> Get-Content C:\Services.txt
Status   Name               DisplayName
------   -----              -----------
Stopped  AJRouter           Al

Заключение

Out-File

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

Этот командлет не предоставляет реальных возможностей для изменения вывода. Он просто сохраняет вывод точно так, как он отображается в консоли. Этот командлет аналогичен транскрипту PowerShell, который просто пишет все напрямую в текстовый файл.

Командлеты Add-Content или Set-Content всегда обладают большей гибкостью, но если вам нужен быстрый способ получить вывод PowerShell в файл, то лучше использовать командлет Out-File.

Связано: Set-Content: PowerShell способ записи в файл

Source:
https://adamtheautomator.com/out-file/