2015-04-09 2 views
0

Я пытаюсь запустить этот скрипт, который автоматизирует установку App-V 5.0 с помощью PowerShell. Я устанавливаю его на Windows Server 2012 R2 с SQL 2012. Всякий раз, когда он достигает Invoke-Expression $ installappv, ничего не происходит. Я вижу, что файл установки запускается в течение нескольких секунд в диспетчере задач, но ничего не устанавливается. Пожалуйста помоги.Установка сервера PowerShell App-V 5.0 SP3

.\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" 
+0

Это _seems_ ok, что у вас есть, но вы не показываете нам, как выглядит файл ini, так что проблема исходит оттуда. Вы сказали, что exe запускается, но останавливается вскоре после этого, так что начало в порядке. Давайте посмотрим на ваши аргументы. – Matt

+0

/ТИХОЙ /AcceptEula /MANAGEMENT_SERVER /MANAGEMENT_ADMINACCOUNT="XXXX.local\XXXXX " /MANAGEMENT_WEBSITE_NAME = "App-V служба управления Microsoft" /MANAGEMENT_WEBSITE_PORT = "80" /DB_PREDEPLOY_MANAGEMENT /MANAGEMENT_DB_SQLINSTANCE_USE_DEFAULT /MANAGEMENT_DB_NAME =" AppVManagement» /PUBLISHING_SERVER /PUBLISHING_MGT_SERVER="http://testappvsvr.XXXX.local:80" /PUBLISHING_WEBSITE_NAME = "Microsoft AppV Publishing Service" /PUBLISHING_WEBSITE_PORT = "81" –

+0

есть куча цитат там что _might_ быть причиной. Мое внимание обращается на эту полуколону, которая кажется неуместной, а также – Matt

ответ

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.

Во втором примере точка с запятой состоит из одной кавычки, поэтому вся строка выводится на одну строку.

Я не знаю, должно ли оно быть там, но эта точка с запятой должна быть решена так или иначе, чтобы Invoke-Expression не видел все это своим одиноким.

Возможно, вы можете обернуть все аргументы в одном наборе кавычек.

$appvparameters = "'$($appvconf -join "' '")'" 
+0

Я попробовал ваш пример. Использование набора котировок не позволяло параметрам перейти к setup.exe –

+0

@KajuanByrd извините, что это была плохая идея. , Должна ли быть такая точка с запятой?См. Мое редактирование для этого. каждый аргумент теперь находится в своём собственном наборе котировок. – Matt

+0

точка с запятой не должна быть там. Я пробовал обновленную версию с каждым аргументом в своем собственном наборе кавычек, но он все еще не устанавливается. –

0

@Matt Я понял, что проблема. Настройка не включает изменения номеров портов по умолчанию из INI. Эти параметры должны быть изменены после установки. Спасибо за вашу помощь.