5

リモート コンピューターでいくつかの作業を実行するために 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 &quot;&amp; {. 'C:\test.ps1';Test -password '`%25'}&quot;" />
    </Target>
</Project>

test.ps1

Function Test {
    param (
        [string]$password = $(throw "Please specify password")
    )

    Write-Host $password
}
4

1 に答える 1

4

バッチファイルでは、パーセント記号は二重パーセント記号(%%)を使用して「エスケープ」できます。だからこれはトリックを行います:

<Exec Command="powershell &quot;&amp; {. 'C:\test.ps1';Test -password '%25%25'}&quot;" />
于 2012-05-25T11:25:21.670 に答える