2014-03-19 45 views
0

我对SCCM 2007脚本应用程序部署没有任何问题,但SCCM 2012让我把头发拉出来,剩下的东西很少。 我们倾向于进行大量脚本安装,并且SCCM 2012中安装失败的大部分时间都是失败的,最新的失败是赛门铁克企业仓库,我编写了一个脚本来检查主DLL插件版本并使用正确的卸载字符串删除以前的版本,然后安装最新版本。 我的脚本非常简单,并且在SCCM之外工作良好,但在SCCM内部却失败了。 如果我将应用程序重新创建为MSI部署并使用MSI文件,那么它将安装正常,因此SCCM可以正常工作到客户端。 SCCM从MSI中放入的卸载失败,但在下面的示例中将对此进行介绍。我检查了所有客户端日志文件并找不到任何问题。 我甚至在脚本结尾处返回成功安装返回码1707和0,尝试让SCCM成功。 我已经在VB.net中首先编写脚本作为控制台服务应用程序,然后在vb脚本中重写它。两个脚本都失败了过去我曾经使用AutoIT编写脚本,但那也失败了,所以我想我会换用更多的微软。 对于检测,我使用Windows安装程序选择并指向获取产品代码的msi文件。 部署类型是脚本。 我唯一能想到的是SCCM 2012不喜欢脚本中的睡眠。 或者它只是不喜欢脚本。 :-( MSI卸载失败,因为它需要以管理员身份运行,正如您从下面的脚本中看到的那样,我以管理员身份运行,它在SCCM之外运行,但不在SCCM中运行,安装使用的代码几乎相同,但更多的逻辑和更多的卸载串 甚至卸载失败,这里是卸载脚本是多么简单;SCCM 2012应用程序部署脚本问题,任何想法?

`enter code here 
Set WshShell = WScript.CreateObject("WScript.Shell") 
If WScript.Arguments.length = 0 Then 
    Set ObjShell = CreateObject("Shell.Application") 
    ObjShell.ShellExecute "wscript.exe", """" & 
      WScript.ScriptFullName & """" & "RunAsAdministrator", , "runas", 1 
    Else 
end if 

Set objShell = CreateObject("WScript.Shell") 
Set objExec = objShell.Exec("MsiExec.exe /x{ADEBB592-4986-4FD1-868C-D59DB32F0BC2} /q") 

WScript.Sleep 8000 
returnValue = 1707 
WScript.Quit(returnValue) 

回答

0

只是因为它的工作原理SCCM之外,如果你要使它发挥作用,并不意味着很多使用SCCM!人们一直在做这种比较工作,这意味着什么都没有,你需要做的是启用MSI的详细日志记录,命令行就像这样msiexec/x {xyz-code}/l * vc :\ somelogpath.log,试试吧,你可能会发现一些同样奇怪的事情,比如1303错误在日志文件中

0

您是否已将SCCM设置为在您定义的程序中以管理员身份运行它?

0

使用PSEXEC并执行系统帐户下的命令。 我发现一些设置/安装程序不喜欢在没有GUI或其他非用户帐户的情况下执行。

另一件事,在SCCM 2012中,您只有简单的程序包,只需退出代码检查。 还有一些应用程序可以有检测规则,可以用来真正验证程序是否正确安装/执行。

也总是检查ITninja的提示。