我正在尝试让这个脚本工作,它使用PowerShell自动安装App-V5.0。我把它安装在装有SQL2012的Windows Server2012 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"发布于 2015-04-09 21:35:50
由于使用了分号,Invoke-Expression将您的字符串视为两个命令。
考虑以下语句。
示例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作为参数。我没有一个名为stuff的cmdlet或exe,所以我得到一个错误。我想这就是发生在你身上的事。您的一大块参数未发送到appv_server_setup.exe。
在第二个示例中,分号位于单引号中,因此整个字符串在一行中输出。
我不知道它是否需要在那里,但必须以某种方式解决这个分号,这样Invoke-Expression就不会孤单地看到它。
也许你可以用一组引号把所有的参数都括起来。
$appvparameters = "'$($appvconf -join "' '")'"发布于 2015-04-10 13:47:29
@Matt我找到了问题所在。该设置不排除对INI中的默认端口号的更改。这些参数必须在安装后更改。谢谢你的帮助马特。
https://stackoverflow.com/questions/29529423
复制相似问题