如何通过 CFExecute 参数将变量传递给 powershell 脚本?

How to pass variable into powershell script through CFExecute arguments?

我正在尝试使用以下代码将用户提供的值传递到 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 命令行中写入,但它没有将变量传递到具有此语法 $MyVar 的 .ps1 脚本中。

试一试

<cfexecute name="C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" arguments="-file C:\Users\raimonds\Desktop\create_website_IIS_aws_uat_1.ps1 ""youvalue"""/>

你快到了。只需更改顺序即可,如下:

<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)

看看这个 Whosebug page for additional Powershell options 你可能想要使用。