Есть так много способов получить конечную цель:
В вашем скрипте просто есть что-то вроде этого:
"Process started"
<step1>
"Doing step 1"
<step2>
"Doing step 2"
...
Затем запустите скрипт как
.\test.ps1 | Tee-Object -file log.txt
Обратите внимание, что вывод доступен для Tee-Object
и, следовательно, консоли, как и когда это происходит. Вы не получите вывод только после запуска всего скрипта. Так работает конвейер в Powershell. Объекты передаются вниз по течению, как и когда они происходят. Вставьте sleep 10
между шагами и убедитесь, что вывод поступает, как только он становится доступным.
Кроме того, вам не обязательно иметь другой скрипт (launcher.ps1), о котором вы говорите. Вы можете использовать функции, блок скриптов и т. Д. В вашем скрипте.
Некоторые другие способы:
function test {
"Process started"
sleep 5
"Doing step 1"
sleep 5
"Doing step 2"
}
test | %{$output+=$_;$_}
#use output
write-host -fore blue $output
Вы можете создать фильтр:
$script:output = ""
filter appendOutput {
$script:output+= $_
return $_
}
"Process started" | appendOutput
sleep 5
"Doing step 1" | appendOutput
sleep 5
"Doing step 2" | appendOutput
#use output
write-host -fore blue $script:output
Возможно, есть еще много способов сделать это.