psake使用包含&符号的参数调用msdeploy.cmd

时间:2011-09-20 12:55:32

标签: msdeploy psake

我有一个psake脚本来管理我的部署,过程如下:

  1. 编译&运行测试
  2. 使用msbuild生成部署包
  3. 检查我们是在内部部署还是在外部部署
  4. 如果是internal,请执行生成的cmd文件
  5. 如果是外部,则提示输入用户名和密码,并使用用户名和密码作为参数执行生成的cmd文件
  6. 我在外部部署时以下列方式执行msdeploy:

    exec { & $deploy_cmd /Y /M:$msdeploy_url /U:$user /P:$pwd /A:NTLM }
    

    当密码包含&符号(&)时,我认为,当将参数分配给变量时,cmd文件会在&和&之前分配密码部分。然后尝试执行该部分。哪个是bat文件行为(&用于分隔命令)。

    我在密码提示期间尝试使用插入符号(^)转义密码,但这不起作用。

    除了更改密码外,还有其他选择吗?

1 个答案:

答案 0 :(得分:0)

因为cmd文件正在解析参数,然后再次将它们作为原始字符串传递,这是我获得的唯一方法。在密码中使用的字符是在某些特殊字符之前使用^^^对其进行三重转义。我假设&将同样工作。或者您可以转义密码中的所有字符:

    $pwd = $pwd -replace '.','^^^$&'