Я пытаюсь передать значение, указанное пользователем, в сценарий PowerShell, используя следующий код, но мне не повезло:

<cfset MyVar="Woila!">

<cfoutput>
<cfexecute name="C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" 

arguments="$MyVar = #MyVar# C:\Users\raimonds\Desktop\create_website_IIS_aws_uat_1.ps1" 
/>
</cfoutput>

Аргумент записывается в командную строку PowerShell, но не передает переменную в сценарий .ps1 с этим синтаксисом $MyVar.

4
Raimonds Plume 26 Ноя 2016 в 04:04

2 ответа

Лучший ответ

Попробуй

<cfexecute name="C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" arguments="-file C:\Users\raimonds\Desktop\create_website_IIS_aws_uat_1.ps1 ""youvalue"""/>
1
Esperento57 28 Ноя 2016 в 06:52

Вы почти были там. Просто измените порядок следующим образом:

<cfset MyVar="Woila!">

<cfexecute name="C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" 

arguments="C:\Users\raimonds\Desktop\create_website_IIS_aws_uat_1.ps1 
 MyVar '#MyVar#'" />

В качестве альтернативы определите атрибут arguments как

arguments="& 'C:\Users\raimonds\Desktop\create_website_IIS_aws_uat_1.ps1' 
     MyVar '#MyVar#'"

Предполагается, что ваш скрипт определяет параметр MyVar обычным образом, например:

 param([string]$MyVar)

См. Эту страницу Stackoverflow для дополнительных параметров Powershell, которые вы, возможно, захотите использовать.

1
Community 23 Май 2017 в 12:07