5

我已经使用 Chocolatey 安装了 psake。psake这允许您使用来自 powershell 或 windows 命令行的命令运行 psake 。

但是,当我尝试使用以下命令将属性传递给 psake 时

psake TestProperties -properties @{"tags"="test"}

我收到以下错误:

PS D:\projects\WebTestAutomation> psake TestProperties -properties @{"tags"="test"}
"& 'C:\Chocolatey\lib\psake.4.2.0.1\tools\\psake.ps1' TestProperties -properties System.Collections.Hashtable
C:\Chocolatey\lib\psake.4.2.0.1\tools\psake.ps1 : Cannot process argument transformation on parameter 'properties'. Cannot convert the "System.Collections.Hashtable" value of
 type "System.String" to type "System.Collections.Hashtable".
At line:1 char:80
+ & 'C:\Chocolatey\lib\psake.4.2.0.1\tools\\psake.ps1' TestProperties -properties <<<<  System.Collections.Hashtable; if ($psake.build_success -eq $false) { exit 1 } else { e
xit 0 }
    + CategoryInfo          : InvalidData: (:) [psake.ps1], ParameterBindin...mationException
    + FullyQualifiedErrorId : ParameterArgumentTransformationError,psake.ps1

关于如何克服这个问题的任何想法?

4

1 回答 1

6

我通过将属性Hashtable作为string.

psake TestProperties -properties "@{tags='test'}"

我还建议从命令提示符而不是 powershell 运行命令。因为该psake命令通过调用一个.bat文件来工作,然后该文件又调用一个.cmd又执行一个.ps1文件的文件,所以当从 powershell 执行命令时,在属性中使用与号会导致问题。

例如,以下命令从命令提示符成功运行,但从 powershell 控制台运行时出错:

psake TestProperties -properties "@{tags='test^&wip'}"

注意^转义&字符的使用。

于 2013-08-13T12:46:30.717 回答