Прозрачное сохранение результатов выполнения последней команды в переменной

Как известно, PowerShell — это объектная среда. И это позволяет передавать результаты выполнения одной команды в другую в виде объектов. Это же касается и вывода этих самых результатов на консоль. То есть, в случае, если мы не используем командлеты Format-*, то по сути на экране мы получаем приведенные к текстовому виду объекты.

Здесь есть одна особенность. Если мы не указываем какой-либо специальный командлет для обработки вывода, то используется Out-Default.

То есть строки

Get-Process

и

Get-Process | Out-Default

являются равноценными.

Зная этот факт, мы можем сделать следующую вещь:

$PSDefaultParameterValues["Out-Default:OutVariable"] = "Result"

Что мы сделали?

Переменная $PSDefaultParameterValues используется для указания значений параметров по умолчанию. Используя предыдущий пример, разберем синтаксис.

Out-Default — это командлет.
OutVaribale — это параметр.
Result — его значение.

Теперь, где бы мы не использовали командлет Out-Default, в случае, если значение параметра OutVariable не будет указано явным образом, то его значение будет равно «Result».

Вспоминая начало статьи, где мы говорили о том, что командлет Out-Default используется по умолчанию при отсутствии каких-либо других командлетов для вывода, результатом наших манипуляций станет возможность обнаружить результат выполнения последней веденной команды в переменной $Result.

В упрощенном виде это может выглядеть так:

Get-Process -Name p*
powershell.exe
$Result
powershell.exe

Get-Process -Name e*
explorer.exe
$Result
explorer.exe

Естественно, если мы явно передадим результат выполнения командлета какой-либо другой команде, то наша переменная $Result новых данных не получит и останется с прежним значением.

Get-Process -Name s* | Out-Host
svchost.exe
$Result
explorer.exe

Страницы в социальных сетях:

Twitter: https://twitter.com/vsseth
Facebook: https://fb.com/inpowershell
VKontakte: https://vk.com/inpowershell


Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s