PowerShell スクリプトから msdeploy に送信しようとしているパラメーターのスペースに問題が発生しています。
他にも関連する記事がいくつかありますが、どれも問題を解決していません。
Power Shell と MSDeploy の使用に関する問題。
動作しない同様の SO 問題:スペースと引用符を含むパラメーターを使用してPowerShellで exe を実行する
方法
成功し、さらに複雑にすると失敗する最も単純な例は、デフォルトの Web サイトをダンプすることです。
$msdeploy = "C:\Program Files\IIS\Microsoft Web Deploy\msdeploy.exe"
&$msdeploy -verb:dump -source:appHostConfig=`'既定の Web サイト`' -verbose
== SUCCESS
これです?
$sitename="default web site"
&$msdeploy -verb:dump -source:appHostConfig=$sitename -verbose
== 次のエラー
msdeploy.exe で失敗: エラー: 認識されない引数 '"-source:"appHostConfig=default'. すべての引数は「-」で始める必要があります。
At C:\xxx\test.ps1:122 char:6
+ &
+ CategoryInfo : NotSpecified: (Error: Unrecogn...begin with "-".:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
エラー数: 1.
次の
バリエーション
も失敗
し
まし
た
$sitename="'既定の Web サイト'"
&$msdeploy -verb:dump "-source:appHostConfig=$sitename" -verbose
&$msdeploy -verb:dump -source:appHostConfig="$sitename" -verbose
&$msdeploy -verb:dump -source:appHostConfig='$ sitename' -verbose
&$msdeploy -verb:dump -source:appHostConfig=`'$sitename`' -verbose
&$msdeploy -verb:dump -source:appHostConfig=`"$sitename`" -verbose
私は途方に暮れています。私が一緒に働いている人は皆途方に暮れています。マジでこれはヤバい。私はパワーシェルが大好きでした。私は msdeploy が大好きでした。それらを組み合わせるのが好きだとは言えません。cli ではなく API に集中する方が簡単だったようです。
編集:
Emperor XLII によって提案された文字列配列のパラメーターはうまく機能します。別の解決策は、次の記事で紹介されています: The Tribulations of using MSDeploy with PowerShell
function PushToTarget([string]$server, [string]$remotePath, [string]$localPath) {
cmd.exe /C $("msdeploy.exe -verb:sync -source:contentPath=`"{0}`" -dest:computerName=`"{1}`",contentPath=`"{2}`" -whatif" -f $localPath, $server, $remotePath )
}