5

我正在尝试执行以下test.ps1脚本

param([string]$name,[string]$password);
write-Output "Hello $($name) my password is  $($password)";
dir c:\
New-Item c:\HRTemp\test.txt -ItemType file

使用以下命令在远程服务器上

StartPowershellScript("Invoke-Command", args =>
{
    args.Append("ScriptBlock", "{{c:\\test.ps1 -name dato -password test}}" );
});

我能够从命令行成功调用这个命令,现在我想要使用 cake 脚本。

我正在使用Cake.Powershell插件。

当我尝试用一​​个花括号执行它{c:\\test.ps1 -name dato -password test}时,出现错误:

Error: Input string was not in a correct format.

当我用两个花括号尝试时

{{c:\\test.ps1 -name dato -password test}}

输出如下

Executing: Invoke-Command -ScriptBlock {{c:\test.ps1 -name dato -password test}}

但是,当我检查远程服务器 test.txt 文件时没有创建。

你知道为什么会这样吗?

4

1 回答 1

3

这是由于 Cake.Powershell 插件内部使用的对花括号的不同处理以及ProcessArgumentBuilderCake 的内部记录器内部使用的格式解析器造成的。

我向 Cake.Powershell 提交了一个 PR,它现在已经被合并并发布了一个新版本,所以升级到0.2.7 版本将为您解决这个问题。

然后,您应该能够使用以下内容:

StartPowershellScript("Invoke-Command", args =>
{
    args.Append("hostname").Append("-ScriptBlock {c:\\test.ps1 -name dato - password test}");
});

虽然日志将包含双括号,但实际命令将仅使用单括号并且应该正确运行。

于 2016-10-04T23:15:14.703 回答