リモート コンピューターでいくつかの作業を実行するために PowerShell を開始する MSBuild スクリプトがあるため、パスワードを渡してリモート セッションを作成する必要がありますが、問題があります - パスワードに % 文字が含まれている場合、間違って解析されます - % がありません (例: 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>
test.ps1
Function Test {
param (
[string]$password = $(throw "Please specify password")
)
Write-Host $password
}