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'视为自己的命令stufftest作为参数。我没有调用 cmdlet 或 exe stuff,因此出现错误。我想这就是发生在你身上的事情。你的一大块参数没有被发送到appv_server_setup.exe.

在第二个示例中,分号用单引号括起来,因此整个字符串在一行上输出。

我不知道它是否需要在那里,但是必须以某种方式解决该分号,这样Invoke-Expression才能看不到它的寂寞。

也许您可以将所有参数包含在一组引号中。

$appvparameters = "'$($appvconf -join "' '")'"
于 2015-04-09T13:35:49.873 回答
0

@Matt 我发现了问题。除了更改 INI 中的默认端口号外,该设置不会。安装后必须更改这些参数。感谢您的帮助马特。

于 2015-04-10T05:47:29.033 回答