0

PowerShell を使用して App-V 5.0 のインストールを自動化するこのスクリプトを機能させようとしています。SQL 2012 を使用して Windows Server 2012 R2 にインストールしています。Invoke-Expression $installappv に到達しても、何も起こりません。タスク マネージャーでセットアップ ファイルが数秒間起動するのを確認できますが、何もインストールされません。助けてください。

.\AppVInstall\AppVServer\appv_server_setup.exe /layout
$appvconf = Get-Content .\AppVInstall\AppVServer\AppV_Conf.ini
$appvparameters = $appvconf -join " "
$installappv = ".\AppVInstall\AppVServer\appv_server_setup.exe" + " " + $appvparameters
Invoke-Expression $installappv

これは、ファイル「.\AppVInstall\AppVServer\AppV_Conf.ini」の内容です。

/QUIET 
/ACCEPTEULA 
/MANAGEMENT_SERVER
/MANAGEMENT_ADMINACCOUNT="XXXX.local\XXXXX" 
/MANAGEMENT_WEBSITE_NAME="Microsoft App-V Management Service" 
/MANAGEMENT_WEBSITE_PORT="80" 
/DB_PREDEPLOY_MANAGEMENT 
/MANAGEMENT_DB_SQLINSTANCE_USE_DEFAULT
/MANAGEMENT_DB_NAME="AppVManagement" 
/PUBLISHING_SERVER /PUBLISHING_MGT_SERVER="testappvsvr.XXXX.local:80"; 
/PUBLISHING_WEBSITE_NAME="Microsoft AppV Publishing Service" 
/PUBLISHING_WEBSITE_PORT="81"
4

2 に答える 2

0

Invoke-Expressionセミコロンのために、文字列を 2 つのコマンドのように扱っています。

次のステートメントを検討してください。

例 1

PS C:\temp> Invoke-Expression "echo test;stuff test"
test
stuff : The term 'stuff' is not recognized as the name of a cmdlet, function, ....output truncated...

例 2

PS C:\temp> Invoke-Expression "echo 'test;stuff test'"
test;stuff test

最初の例では、セミコロンがエスケープされたり、引用符で囲まれたりしていません。これは PowerShell の行末記号であるため、引数として'stuff test'使用して独自のコマンドとしてstuff扱ってtestいます。呼び出されたコマンドレットまたは exe がないstuffため、エラーが発生します。それがあなたに起こっていることだと思います。パラメータの一部が に送信されていませんappv_server_setup.exe

2 番目の例では、セミコロンが単一引用符で囲まれているため、文字列全体が 1 行に出力されます。

そこにある必要があるかどうかはわかりませんが、そのセミコロンは何らかの方法でアドレス指定する必要があるためInvoke-Expression、孤独ですべてが表示されません。

おそらく、すべての引数を 1 組の引用符で囲むことができます。

$appvparameters = "'$($appvconf -join "' '")'"
于 2015-04-09T13:35:49.873 に答える