Как сохранить новые строки из вывода команды, распечатанного с помощью Write-Host в Powershell?

1
8

Недавно (2-3 дня назад) я начал использовать Powershell. У меня есть приложение C++, которое использует argparse для обработки некоторых аргументов командной строки. Если что-то не так, как ожидалось, мой code завершается со строкой справки, предоставленной флагом -/--help любого приложения, использующего эту библиотеку.

У меня есть файл конфигурации CMake

, который обрабатывается с помощью configure_file() для вывода скрипта (файл *.ps1), который добавляется в двоичный каталог моего проекта (EXE, dll и другие данные, имеющие отношение к времени выполнения). Он устанавливает PATH таким образом, чтобы приложение работало так, как ожидается, а также передавал тот же аргумент командной строки, который ожидает мое приложение.

Я заметил, что Write-Host "съедает" все новые строки, которые выводятся в виде многострочной строки из моего приложения.

Вместо

я получаю

Как мне сохранить новые строки?

Write-Host "${APP_NAME} (${BUILD_TYPE})"

$model = ""
$data_in = ""

Write-Host "Checking input arguments"
if ($args.count -ne 5)
{
    Write-Host "Found {0} arguments but expecting 5" -f $args.count
    Write-Host $(./pytorch_load_model.exe --help) -foregroundcolor Cyan
    exit
}

for ( $i = 0; $i -lt $args.count; $i++ ) {
    if (($args[ $i ] -eq "-m") -or ($args[ $i ] -eq "--model")){ $model=$args[ $i+1 ]}
    if (($args[ $i ] -eq "-i") -or ($args[ $i ] -eq "--input")){ $data_in=$args[ $i+1 ]}
}

$fail = $false
if ($model -eq "")
{
    Write-Host "No path for model provided"
}
if ($data_in -eq "")
{
    Write-Host "No path for input provided"
}
if ($fail -eq $true)
{
    Write-Host (./model.exe --help)
    exit
}

# TODO Add check if $opencv and $libtorch valid dir paths
$opencv = "${OPENCV_BIN}"
$libtorch = "${LIBTORCH_BIN}"
#$model = "${PTH_MODEL_PATH}"
#$input = "${INPUT_IMG_PATH}"
Write-Host "Executing model"
$env:Path="$($env:Path);$($opencv);$($libtorch)"; ./pytorch_load_model.exe -m "$($model)" -i "$($data_in)"
PyTorch Load Model (release)
Checking input arguments
Usage: model [--help] [--version] [--model-path VAR] [--png-path VAR]

Optional arguments:
  -h, --help        shows help message and exits
  -v, --version     prints version information and exits
  -m, --model-path  Path to PTH TorchScript model
  -i, --png-path    Path to PNG image to be processed by the model
Usage: model [--help] [--version] [--model-path VAR] [--png-path VAR]  Optional arguments:   -h, --help        shows help message and exits    -v, --version     prints version information and exits    -m, --model-path  Path to PTH TorchScript model    -i, --png-path    Path to PNG image to be processed by the model
Аристарх
Вопрос задан23 апреля 2024 г.

1 Ответ

2
Елисей
Ответ получен2 сентября 2024 г.

Ваш ответ

Загрузить файл.