SCCM zeigte bei manchen Systemen beim PXE Deployment den Fehler 0x80004005 an.
Die Ursache ist eine falsche Systemuhrzeit bzw. ein falsches Datum.
Es ist zwingend notwendig, dass die Uhrzeit des zu betankenden Systems mit der SCCM Uhrzeit übereinstimmt. Nach einer Recherche im Web bin ich über folgenden Artikel gestoßen, der das Problem fast beseitigt (nehmt das Script unten, das ruft die Uhrzeit vom SCCM Server ab).
Vor dem Ausführen der SCCM Abfrage bzgl. der verfügbaren Tasksequenzen ruft dieses Script die Uhrzeit vom SCCM Server ab und übernimmt diese in das zu betankende System.
Warum Microsoft das nicht automatisch macht, ist mir schleierhaft. Es hat mich einige Stunden Arbeit gekostet, das Problem zu analysieren.
Warum hatten ich früher nicht diese Probleme?
Lenovo hat die neue Hardware mit richtiger Systemzeit geliefert. Leider ist das bei Lenovo M700 nicht der Fall und die Systeme kommen mit einer Zeitdifferenz von mindestens 6 Stunden, was spätestens nach dem Deployen des Betriebssystems und dem ersten Neustart Fehlermeldungen erzeugt. Teilweise ist auch das Datum der 2. Februar 2015 ,…
Falls ihr die Probleme nicht habt, empfehle ich euch trotzdem, das Script in euer boot.wim einzubauen, denn der Fehler taucht dann sicher nicht alleine auf, sondern ihr habt zuvor etwas an eurer Tasksequenz geändert. Dann sucht ihr an der falschen Stelle.
Ich hatte hier meine Freunde, da Oracle Java nicht mehr funktionierte (Silent-Parameter wurden geändert), Bluescreens erschienen wegen der neuen Skylake Hardware und die Treiber der neuen Hardware wollten nicht richtig integriert werden (Beitrag mit Best-Practice folgt).
Die Anleitung, dieses Script in euer boot.wim zu integrieren findet ihr im o.g. Artikel.
Das funktionierende VB-Script, welche die Uhrzeit vom SCCM Server abruft, findet ihr hier:
' (c) niall@windows-noob.com 2014/7/24 ' This script allows you to sync the time in WinPE with a local server using a prestart command ' Fill in the user/password/domain/server details below ' For more guides see http://www.windows-noob.com/forums/index.php?/topic/4045-system-center-2012-configuration-manager-guides/ ' for troubleshooting, review the log files created ' net use (to see all existing connections) ' net use * /del /yes (to delete all existing connections) ' strUser = "username" ' strPassword = "password" ' strDomain = "domain.com" ' strServer = "MyConfigMgrServer" Option Explicit DIM ComSpec, WshShell, strUser, strPassword, strDomain, strServer, strCommand, LogFileName, logfile, objFSO, objFile, outFile Set WshShell = CREATEOBJECT("WScript.Shell") strUser = "username" strPassword = "password" strDomain = "domain.com" strServer = "sccmserver.domain.com" PrepLogFile Logtext "Starting logging process." LogText "sleeping for 15 seconds.." WScript.Sleep 15000 LogText "Using NET USE to Connect to " & strServer & " as a Domain user.." strCommand = ComSpec & ("cmd /c net use \\") & strServer & ("\ipc$") & (" ") & strPassword & (" ") & ("/user:") & strDomain & ("\") & strUser & (" ") & (">") & (" ") & ("x:\WinPE_net_use.log") 'wscript.echo strCommand If WshShell.Run (strCommand, 0, True) = 0 then LogText "...NET USE connected ok, continuing." 'On Error GoTo 0 else LogText "...NET USE had an error." ExitScript -1 end if LogText "Using the NET TIME command to sync with the Server time.." 'strCommand = ("cmd /c net time /DOMAIN:") & strDomain & (" /SET /Y") & (">") & (" ") & ("x:\WinPE_net_time.log") strCommand = ("cmd /c net time \\") & strServer & (" /SET /Y") & (">") & (" ") & ("x:\WinPE_net_time.log") 'wscript.echo strCommand WshShell.Run strCommand 'wait for 5 seconds so the new time is registered before talking to the mp LogText "Waiting for 5 seconds so the new time is registered before talking to the mp.." WScript.Sleep 5000 LogText "all done, exiting.." ' ===================================================== ' PrepLogFile Subroutine ' ===================================================== Sub PrepLogFile Dim objFSO Set wShShell = WScript.CreateObject("WScript.Shell") LogFileName = "X:\WinPE_TimeSync.log" 'On Error Resume Next Err.Clear Set objFSO = CreateObject("Scripting.FileSystemObject") If Err.number <> 0 Then MsgBox("**** ERROR (" & Err.Number & ") Could not create Logfile - exiting script") ExitScript 0 Else If objFSO.FileExists(LogFileName) Then objFSO.DeleteFile(LogFileName) End If Err.Clear Set logfile = objFSO.CreateTextFile(LogFileName) If Err.number <> 0 Then MsgBox "ERROR (" & Err.Number & ") Could not create logfile (File) - exiting script" ExitScript 0 End If End If Err.Clear 'On Error GoTo 0 logfile.writeline "##############################################" logfile.writeline " windows-noob.com WinPE Time sync Script " logfile.writeline "##############################################" End Sub ' ===================================================== ' LogText Subroutine ' ===================================================== Sub LogText (TextToLog) logfile.writeline "" & Now() & " " & TextToLog End Sub ' ===================================================== ' Exit function ' ===================================================== Function ExitScript(iStatus) if iStatus <> 0 then set WshShell = WScript.CreateObject("WScript.Shell") ComSpec = WshShell.ExpandEnvironmentStrings("%COMSPEC%") WshShell.Run "cmtrace.exe " & LogFileName , 1, False End if LogText "All done, exiting successfully" wscript.quit(iStatus) End Function