SCCM Deployment – TimeSync Probleme – Error 0x80004005 – Lenovo M700

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

Paddy

Offenburger Naturfreund und IT'Ler. Immer auf der Suche, etwas Neues zu bäschdle ;-)

More Posts - Website

Follow Me:
TwitterFacebook

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert