我有一个 MSBuild 脚本,它启动 PowerShell 以在远程计算机上执行一些工作,因此您必须传递密码才能创建远程会话,但存在问题 - 如果密码包含 % 字符,则解析错误 - % 丢失(例如:pass%word -> 密码,'%' -> ''(无))。
如果我在 PowerShell 脚本 $password = "pass%word" 中创建变量,它工作正常。我知道 % 是 PowerShell 中的 foreach 所以我尝试使用 ` 来逃避它 - 但它没有帮助。我也可以更改密码,但这不是一个选项(目前)。
那么我该如何解决这个问题呢?
MSBuild 部分
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Test">
<Target Name="Test">
<!-- %25 - it's code for %-->
<Exec Command="powershell "& {. 'C:\test.ps1';Test -password '`%25'}"" />
</Target>
</Project>
测试.ps1
Function Test {
param (
[string]$password = $(throw "Please specify password")
)
Write-Host $password
}