Установка
В написанном мной сценарии powershell я использую многострочную строку, например:
$MLINE_VARIABLE = "*file1
- change1
- change2
*file_2
- change1
- change2
*file-3
- change1
- change2"
Поскольку эта строка сохраняется как переменная, я хотел передать скрипту эту переменную в качестве параметра:
param(
[string]$NORMAL_STRING,
[string]$MULTILINE_STRING
)
echo $NORMAL_STRING
echo $MULTILINE_STRING
запустить скрипт
Я новичок в powershell, но хорошо себя чувствую со сценариями bash. Я протестировал этот скрипт с несколькими входами. вот результаты:
powershell .\test.ps1 -NORMAL_STRING "This is a Normal String!" -MULTILINE_STRING $MLINE_VARIABLE
Первый запуск приводит к следующему длинному сообщению об ошибке (сообщение об ошибке было на немецком языке, и я перевел первое появление ошибки):
powershell : In line:2 char:4
In line:1 char:1
+ powershell .\small_test.ps1 -NORMAL_STRING "THIS IS A NORMAL STRING!" ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (In line:2 char:4:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
+ - change1
+ ~
Missing expression after unary operator '-'.
In line:2 char:5
+ - change1
+ ~~~~~~~
Unexpected token "change1" in expression or statement.
In line:3 char:4
.
.
.
Not all analytical errors were reported. Correct the reported errors and try again.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : MissingExpressionAfterOperator
В следующем тесте я не использовал многострочную строку для проверки работоспособности:
powershell .\test.ps1 -NORMAL_STRING "This is a Normal String!"
Я понял, что скрипт работает, но показывает только первые 2 записи обычной строки:
>> This
>> is
Я предполагаю, что каким-то образом NORMAL_STRING
было установлено на This, а отсутствующий параметр MULTILINE_STRING
был установлен на is.
Итак, чтобы проверить, работают ли сценарии так, как задумано, я изменил параметр -NORMAL_STRING "This_is_a_normal_Parameter"
и вместо использования параметра $MULTILINE_STRING
as установил его внутри сценария.
Что мне нужно
Как я могу успешно передать этот многострочный параметр, не перепутав все переменные?
param()
и при вызове скрипта добавить параметр-File
как вpowershell -File D:\Test\test.ps1 -NORMAL_STRING "This is a Normal String!" -MULTILINE_STRING $MLINE_VARIABLE
- person Theo   schedule 13.01.2021-File
действительно настоящий автор. Вы можете трансформировать его как авсер, так что я могу принять. Может быть, с немного больше информации об этом. Большое спасибо. - person MaKaNu   schedule 13.01.2021