私は明らかに自分が何をしているのかわかりません。
ようやくこの PowerShell コマンドが機能するようになりました。しかし、なぜそれが機能するのかわかりません。
私の懸念は、最後の "" 文字です。
&"C:\Program Files\IIS\Microsoft Web Deploy\msdeploy.exe" `
-verb:sync `
-source:contentPath="$build_directory\deploy" `
-dest:contentPath="$server_temp_directory,computerName=$server,username=$server_username,password=$server_password" `
-verbose `
-postSync=runCommand="powershell -NoLogo -NoProfile -Command $server_temp_directory\remotetasks.ps1 Deploy""
二重引用符が必要なのはなぜですか?
私のIDE(PowerGUI)は、行が正しく終了していないと言っていますが、それがコマンドを必要に応じて実行できる唯一の方法です。
私と IDE が PowerShell での引用について知らないのは何ですか?
echoargs からの小さな出力:
私が実行した場合:
echoargs -postSync=runCommand="powershell -NoLogo -NoProfile -Command $server_temp_directory\remotetasks.ps1 Deploy""
私は得る:
Arg 0 is <-postSync=runCommand=powershell -NoLogo -NoProfile -Command \remotetasks.ps1 Deploy>
二重引用符なしで実行すると、次のようになります。
Arg 0 is <-postSync=runCommand=powershell>
Arg 1 is <-NoLogo>
Arg 2 is <-NoProfile>
Arg 3 is <-Command>
Arg 4 is <\remotetasks.ps1>
Arg 5 is <Deploy>
注意すべきもう 1 つの点は、上記のコマンドは:
、最後の引数の代わりに = を使用した場合にのみ機能することです。
これはうまくいきません:
-postSync:runCommand="powershell -NoLogo -NoProfile -Command $server_temp_directory\remotetasks.ps1 Deploy""
私は次のような配列ソリューションを試しました:
$arguments = @("-verb:sync",
"-source:contentPath=$build_directory\deploy",
"-dest:contentPath=$server_temp_directory,computerName=$server,username=$server_username,password=$server_password",
"-verbose",
"-postSyncOnSuccess:runCommand=powershell -Command $server_temp_directory\remotetasks.ps1 Deploy")
&"C:\Program Files\IIS\Microsoft Web Deploy\msdeploy.exe" $arguments
それでも同じエラーが発生します。
エラー: 認識されない引数 '"-postSyncOnSuccess:runCommand=powershell -Command c:\temp\kslog\remotetasks.ps1 Deploy"'. すべての引数は「-」で始める必要があります。
ここで何か新しいことを間違っていますか?