2014-03-19 44 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的提示。