Viji
@Viji
DevOps Engineer

Почему эта команда работает в отдельном окне и ничего не возвращает?

$version = (Start-Process -FilePath "docker" -ArgumentList "version")
Write-Host "docker version:`n $version"


Данная команда выполняется как скриптовая инсталляция образа Windows - и ничего не возвращает. Попробовал сам ее запустить , появляется окно коммандной строки и исчезает. Как можно получить этот output в файл или переменную?

Так тоже пробовал
Start-Process -FilePath "docker" -ArgumentList "version" > file_name


файл пустой
  • Вопрос задан
  • 243 просмотра
Решения вопроса 3
@BeatHazard
Для получения корректного вывода можете выполнить его таким образом:
$version = (docker version)
Ответ написан
Комментировать
@NortheR73
системный инженер
Потому что Start-Process так работает: по умолчанию не генерирует никакого вывода и на ОС Windows открывает новое окно.
Вариант №1:
Start-Process -FilePath "docker" -ArgumentList "version" -NoNewWindow -PassThru

Вариант №2:
Start-Process -FilePath "docker" -ArgumentList "version" -NoNewWindow -RedirectStandardOutput <output file> -RedirectStandardError <error file>

Остальные примеры есть в первоисточнике - ссылка выше
Ответ написан
потому что мало аргументов у Start-Process

Start-Process -FilePath "docker.exe" -ArgumentList "version"  -RedirectStandardOutput .\\a.txt
get-content .\a.txt|select-string Version:


для более длинной команды - надо разбираться
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Кажется запуск отдельным окном происходит из-за Start-Process.

Добавьте после Write-Host команду Pause, отдельной строкой.
Тогда окно не будет закрываться, и всё увидите.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы