coldfusion变量变为powershell

时间:2013-07-08 13:38:13

标签: powershell coldfusion

我有一个简单的PowerShell脚本,可以创建一个txt文件: -

set-executionpolicy unrestricted -force

$MyVar = 'My Content'

$MyVar | out-file -FilePath "C:\_Testing\test.txt"

这是从ColdFusion脚本调用的: -

<cfexecute name="C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
    arguments="C:\ColdFusion9\wwwroot\testsite\wwwroot\_Testing\powershellTest.ps1"/>

这有效 - 创建txt文件并放入内容,但我想要做的是通过cfexecute将变量传递到$ MyVar,以便内容是动态的。

任何非常感谢的帮助

2 个答案:

答案 0 :(得分:1)

您可以做的是使其成为允许参数的函数。然后,您可以根据需要使用参数调用该函数。

示例:

function CreateText
{
  param ( [string]$MyVar
  )

 $MyVar | out-file -FilePath "C:\_Testing\test.txt"

}

CreateText -MyVar "Content Here"    

你可以这样称呼它:

<cfexecute name="C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
arguments="C:\ColdFusion9\wwwroot\testsite\wwwroot\_Testing\powershellTest.ps1 -MyVar "conent" "/>

答案 1 :(得分:1)

你想要的是一个带参数的脚本。参数定义放在脚本的顶部,如下所示:

param(
    [Parameter(Mandatory=$true)]
    [string]
    # Variable to test that parameter is getting set from ColdFusion
    $MyVar
)

$MyVar | Set-Content "C:\_Testing\test.txt"

首先是属性,它是关于参数的元数据。在示例中,我们声明参数是必需的,如果未提供值,PowerShell将给出错误。

接下来是变量的类型。您可以使用任何.NET类型,例如[int][DateTime][Hashtable]

在类型之后,是变量的文档,当有人运行Get-Help powershellTest.ps1时很有用。

最后,我们声明变量$MyVar

您可以在about_functions_advanced_parameters帮助主题上获取有关参数,参数属性,验证等的更多信息。

现在,棘手的部分是你对PowerShell的调用实际上是通过cmd.exe 首先,所以根据你脚本参数的值,你可能需要做一些时髦的魔术把事情正确引用。

另外,请使用Set-Content代替Out-FileOut-File用于保存二进制对象和数据,并将在UCS-2中编码文本文件。 Set-Content将使用ANSI / UTF-8编码文件。