我有一个简单的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中,这样内容就是动态的。
任何帮助都非常感谢
保罗
发布于 2013-07-09 15:34:42
您需要的是一个具有参数的脚本。参数定义放在脚本的顶部,如下所示:
param(
[Parameter(Mandatory=$true)]
[string]
# Variable to test that parameter is getting set from ColdFusion
$MyVar
)
$MyVar | Set-Content "C:\_Testing\test.txt"First come属性,这是关于参数的元数据。在示例中,我们声明参数是必需的,如果没有提供值,PowerShell将给出一个错误。
接下来是变量的类型。您可以使用任何.NET类型,例如[int]、[DateTime]、[Hashtable]等。
类型后面是变量的文档,当有人运行Get-Help powershellTest.ps1时很有用。
最后,我们声明变量$MyVar。
您可以在about_functions_advanced_parameters帮助主题中获得有关参数、参数属性、验证等的详细信息。
现在,棘手的部分是,您对PowerShell的调用实际上是首先通过cmd.exe,因此根据脚本参数的值,您可能需要做一些奇妙的魔术来正确引用内容。
此外,请使用Set-Content而不是Out-File。Out-File用于保存二进制对象和数据,并将对UCS-2中的文本文件进行编码。Set-Content将以ANSI/UTF-8对文件进行编码。
发布于 2013-07-09 01:26:12
你能做的就是让它进入一个允许参数的函数。然后,您可以在必要时使用params调用函数。
示例:
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" "/>https://stackoverflow.com/questions/17528100
复制相似问题