1
У меня есть следующий (не работает) poweshell скрипт:Как передать аргументы вызывающему выражению в Powershell?
$scriptPath = ((new-object net.webclient).DownloadString('https://gist.githubus
ercontent.com/AndrewSav/c4fb71ae1b379901ad90/raw/23f2d8d5fb8c9c50342ac431cc0360ce44465308/SO33205298')); $args = "`"aaa
bbb`""; iex $scriptPath $args
Так я:
- загрузки скрипта для выполнения.
- создание списка аргументов для отправки в скрипт
- Выполнение скрипта (для меня это прямо сейчас в кли).
но это erroring:
Invoke-Expression : A positional parameter cannot be found that accepts argument '"aaa bbb"'.
At line:1 char:209
+ ... 44465308/SO33205298')); $args = "`"aaa bbb`""; iex $scriptPath $args
+ ~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Invoke-Expression], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.InvokeExpressionCommand
Может кто-нибудь помочь мне понять, как пройти в аргументах к этому сценарию?
Примечание: этот вопрос ссылается/создается от this other SO question.
> «Вы должны создать ScriptBlock из исходного кода перед его вызовом». - На самом деле это не так. Вы можете использовать IEX, II и оператор & call, чтобы все вызывали строковое представление Posh-кода. – ChadT
@DaRKoN_and .. могу ли я передать именованные аргументы? например. '-version 1.2.3.4 -source PewPew -foo any' ?? <- и эти аргументы не находятся в том же порядке, что и параметр, указанный в скрипте –
@DaRKoN_ Вы можете использовать скрипт скрипта, но $ Scriptpath - это не путь к скрипту, а источник сценария, и я не см., как вы начинаете сценарий из источника с Invoke-Item, иначе, чем сохранение источника в файл. Ответ, который я даю здесь. – JPBlanc