是否有可能在cfexecute中获得PowerShell输入的代码行对coldfusion的响应?

时间:2016-12-07 14:58:38

标签: powershell coldfusion

我正在尝试将Powershell的输出恢复到具有不同属性的ColdFusion,例如errorVariable,Variable,errorFile,outputFile但没有成功。

Coldfusion代码 -

<cfset hello = "hello">
<cfexecute name="C:\windows\system32\cmd.exe" 
arguments="/c start c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe C:\Users\raimonds\Desktop\lala.ps1 '#hello#'" 
variable="test">

<cfdump var="#test#">

还有powershell代码 -

param([string]$hello)

Write-Host $hello

谢谢

1 个答案:

答案 0 :(得分:2)

有两个问题:

  1. 语法有点偏。摆脱参数字符串中的start。将powerShell.exe变为可执行文件也更简单。

  2. "timeout"可能导致命令在甚至收到输出之前返回。将其增加到大于0的值并填充变量。

      

    ... [默认超时0]启动进程并立即返回。 ColdFusion可能   在显示任何程序输出之前将控制权返回到调用页面。   要确保显示程序输出,请将值设置为2或更高。

    将超时增加到大于0的值,您应该看到结果。

  3. NB:始终捕获任何错误,以便代码可以相应地处理任何问题。

    <cfset inputVar = "test value here">
    <cfexecute name="c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe" 
        arguments="C:\path\to\yourScript.ps1 '#inputVar#'" 
        variable="result"
        errorvariable="err"
        timeout="2">
    
    <cfdump var="#result#">
    <cfdump var="#err#">