Я работаю с файлами Dicom, пытаясь найти способ выполнить команду и передать ей необходимые параметры. Общая идея состоит в том, чтобы зафиксировать вывод в виде строки, которая позже будет вставлена в базу данных.
При таком кодировании вывод сохраняется в переменной $errOutput.
$command = ".\myprogram.exe"
$params = "-v -aet *PARAM* -aec *PARAM* *IP* *Port* $($row.filename)"
[string]$errOutput = $( $output = &$command $params ) 2>&1
Но параметры не работают должным образом.
Сообщение об ошибке:
$dcmtk: dcmsend v3.6.7 дата $ System.Management.Automation.RemoteException dcms конец: ошибка SCU (отправителя) простого хранилища DICOM: неизвестная опция -v -aet ПАРАМЕТРЫ -aec ПАРАМЕТРЫIPПОРТфайл
(Вразумительные данные были заменены на порт, ip, имя файла и т.д.)
Если вы хотите передать список параметров в Powershell, вам действительно нужно передать список, а не одну строку. Это можно сделать, указав список строк, разделенных запятыми:
$command = "dcmsend"
$params = "-v", "-aet", "SOME_AET", "-aec", "CALLED_AET", "hostname", "104", "test.dcm"
$errOutput = $( $output = &$command $params ) 2>&1
Таким образом, ваш код должен работать как есть, если вы передаете параметры в виде списка.
Большое спасибо. Это работало таким образом. Я продолжал пытаться передать параметры как один блок. Мне не пришло в голову попробовать это таким образом. Описание ошибки из PS тоже не помогло