Das Problem:
Heute fiel uns auf, das einige unserer Windows-Clients im Netzwerk scheinbar keine Zeitsynchronisation mit unserem Domain-Controller durchführen und Kerberos uns daher Fehlermeldungen im Eventlog fabrizierte. Da die Benutzer bei uns nur User sind, haben sie keine Berechtigung, die Uhrzeit selber zu ändern.
Was tun, wenn man nun nicht durch die ganze Firma laufen möchte, um die Uhrzeiten wieder richtig einzustellen?
Schliesslich ist man als Admin ja doch faul oder einfach zu bequem
Die Lösung:
Die passende Hilfe fand in einem Tool von der Firma Sysinternals, die von Microsoft aufgekauft und eingegliedert wurde.
http://technet.microsoft.com/de-de/sysint ...
Das Programm wird zusammen mit anderen in einer Tools-Sammlung angeboten, die ständig erweitert wird. Die Hilfe und Parameter zu den einzelnen Programme findet man in der beiliegenden Hilfedatei (Pstools.chm).
PSExec ist eine Art telnet-Ersatz, mit dem man Prozesse auf anderen Systemen ausführen kann, ohne dass eine (manuelle) Installation von Client-Software nötig ist.
Man startet PSExec aus einem CMD-Fenster heraus. Um sich nun mit einem anderen PC zu verbinden, braucht man gewisse Parameter.
Bei mir hat die Verbindung leider nicht über den Hostnamen, aber über die IP funktioniert.
Mit dem folgenden PC bekommt man die IP heraus:
C:\>ping COMPUTERNAME
Ping COMPUTERNAME [12.34.56.78] mit 32 Bytes Daten:
...
Die IP wäre also 12.34.56.78 und somit können wir loslegen.
Zunächst müssen wir PSExec dazu bringen, sich mit dem Remoterechner zu verbinden und für meinen Fall benötige ich ein CMD, um die Zeit einzustellen. Dies erreiche ich mit folgendem Befehl:
psexec \\12.34.56.78 -e -u DOMÄNE\USER cmd
-e -u DOMÄNE\USER = benutzt eine andere Anmeldung (hier einen Adminaccount), da die User keine Berechtigung haben
cmd = es wird ein Commandprompt verwendet/geöffnet (andere Möglichkeiten stehen in der Hilfedatei)
Nach Eingabe des Passworts bin ich nun remote auf dem Fenster und der Cursor blinkt nun hinter ' ;
C:\Windows\System32>'
Nun kann der Spass beginnen, aber als Admin sollte man wissen, was man tut.
Zunächst möchte ich noch mal sehen, welche Uhrzeit der PC nun wirklich hat: Dazu tippe ich ein:// time /T
Die angezeigte Uhrzeit ist bei mir nun aber um gut 30 Minuten zurück und daher möchte ich, das die zeit mit unserem Domänencontroller (DC002) abgeglichen wird: net time /set / y
Das Ergebnis wird mir prompt angezeigt:
Current time at \\DC002 is 4/16/2008 1:31 PM
The command completed successfully .
Ohne das /y müsste ich eigentlich noch bestätigen, ob die Zeit wirklich mit dem DC002 abgeglichen werden soll. Leider taucht hier ein Problem von PSExec auf, denn wartet scheinbar darauf, ob ich ein J oder N eingeben:
C:\WINDOWS\system32>net time /set
Aktuelle Zeit auf \\DC002 ist 4/16/2008 1:36 PM.
Die aktuelle lokale Zeit ist 4/16/2008 1:36 PM.
Soll die Zeit des lokalen Computers mit
der Zeit auf \\KLREMDC002 übereinstimmen? (J/N) [J]:
Es wurde keine gültige Antwort gegeben.
C:\WINDOWS\system32> ;
Nach einer erneuten Überprüfung der Uhrzeit mit time / T
bin ich zufrieden und mein Job erledigt.
Es gibt sicherlich noch mehr Möglichkeiten, das Programm einzusetzen und dies war auch lediglich nur ein Beispiel.
Learning by doing - probiert es selber aus 
nachtrag 17.04.2008
Ich habe nun rausgefunden, wie man das ganze in einer Zeile managen kann, ohne das man sich erst verbinden und dann den Befehl eintippen muss:
psexec -e -u DOMAINE\USER \\COMPUTER cmd /c net time /set /y
Man muss dabei nur noch einmal das Passwort eintippen und landet am Ende auch wieder auf seinem PC, da die Remotesitzung nach Ende des Befehls auch wieder geschlossen wird.
Wenn das ganze auf mehreren PCs erfolgen soll, dann kann man das ganze auch mit einer Datei abarbeiten lassen. Ich habe mir dazu im gleichen Verzeichnis eine 'computer.txt' angelegt, in der die Computer untereinander aufgelistet sind (geht auch mit Komma-Trennung) und rufe das ganze dann wie folgt auf:
psexec -e -u DOMAINE\USER @computer.txt cmd /c net time /set /y //