Назначение переменных в Powershell и конвейер - PullRequest
0 голосов
/ 26 февраля 2019

В чем принципиальная разница между этими двумя командами?

$myVar = & "notepad.exe"

и

& "notepad.exe" | Set-Variable "myVar"

Для первой команды команда возвращается немедленно, не дожидаясь завершения exe, чтоэто было не то, что я ожидал.

Со вторым (или чем-то еще с конвейером, таким как | Out-File или | Set-Content), команда должным образом ждет, пока исполняемый файл запишет результат в stdout и завершится.

1 Ответ

0 голосов
/ 26 февраля 2019

Конвейер - это не что иное, как взятие Вывода из первого набора и передача его в качестве ввода во второй.Трубопроводы действуют как серия соединенных сегментов трубы.Предметы, движущиеся по конвейеру, должны проходить через каждый сегмент.

В вашем случае, Powershell фактически ожидает в обоих случаях.но если вы используете Measure-Command, есть разница во времени выполнения, которая лучше в случае $myVar = & "C:\path to\program.exe" $argument

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...