resalsr
Goto Top

Windows Updates (autom. Neustart) und WU Treiber durchsuchen

Hallo,


wir haben per Gruppenrichtilinien festgelegt, dass sich die Client (XP + Win-7) die updates automatisch um 03:00 uhr jeden tag von usnerem WSUS -Server holen.
Das funktioniert auch (DC/AD - Controller = win 2008 server).

(1) Allerdings kommt es manchmal vor, dass sich die Updates installieren und dann automatisch neugestartet wird, ohne Beeinflussung durch den User.

SPrich ich war heute in einem Programm, hab darin gearbeitet und er fuhr plötzlich alles runter und startete den PC wegen Updates neu.

Woran liegt das bzw. haben wir eine Einstellung vergessen?

cb4f30f91711b0defc2c962aedd6eb4a


(2) Beim Anschließen neuer Geräte werden bei Win-7 ja die WIndows-Updates nach Treibern durchsucht. Ich meine, mal gehört zu haben, dass man die ebenfalls per Gruppenrichtlinie verhindern bzw. überspringen lassen kann. Weiß hier jemand den Pfad bzw. die Einstellung?

Danke im Voraus !

Content-Key: 158637

Url: https://administrator.de/contentid/158637

Printed on: May 8, 2024 at 19:05 o'clock

Member: Coreknabe
Coreknabe Jan 14, 2011 at 08:39:31 (UTC)
Goto Top
Moin,

mit dem folgenden VB-Script auf dem Client mal checken, welche Einstellungen dort gelten:

'--------------------------------------------  
' Einstellungen für die automatischen Updates  
' http://www.wsus.de/  
' Version 1.05.04.1  
'--------------------------------------------  
On Error Resume Next

Set objWshNet = CreateObject("Wscript.Network")  

const HKCU = &H80000001
const HKLM = &H80000002

strDefComputer = lcase(objWshNet.ComputerName)

Set oArgs = WScript.Arguments
If oArgs.Count = 0 Then
 strComputer = InputBox("Geben Sie hier den Namen oder die IP-Adresse des Computers ein, bei dem Sie die automatischen Update Einstellungen überprüfen möchten", "Autom. Update Client Einstellungen", strDefComputer)  
Else
 strComputer = oArgs(0)
End If

If strComputer = "" Then  
 WScript.Quit
End if

strComputer = lcase(strComputer)
if left(strComputer,2)="\\" then  
 strComputer=right(strComputer,(len(strComputer)-2))
end if

Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")  

If Err.Number <> 0 Then
 msgbox "Verbindungsfehler zum Computer:" & VBCRLF & VBCRLF & "     " & strComputer & VBCRLF, vbCritical, "Verbindungsfehler"  
 WScript.Quit
End If

Resultmsg = "**** Einstellungen für die automatischen Updates ****" & VBCRLF & VBCRLF  

strMsg = "No Auto Update:  "  
strKeyPath = "Software\Policies\Microsoft\Windows\WindowsUpdate\AU"  
strValueName = "NoAutoUpdate"  
If RegValueExists(strKeyPath, strValueName) Then
 oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue
 Resultmsg = Resultmsg & strMsg & GetNoAutoUpdate(dwValue) & VBCRLF & VBCRLF
Else
 Resultmsg = Resultmsg & strMsg & "Einstellung ist nicht konfiguriert" & VBCRLF & VBCRLF  
End If

strMsg = "Use WU Server:  "  
strKeyPath = "Software\Policies\Microsoft\Windows\WindowsUpdate\AU"  
strValueName = "UseWUServer"  
If RegValueExists(strKeyPath, strValueName) Then
 oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue
 Resultmsg = Resultmsg & strMsg & GetUseWUServer(dwValue) & VBCRLF

 If dwValue = "1" Then  
  strMsg = "  - WSUS Server:  "  
  strKeyPath = "Software\Policies\Microsoft\Windows\WindowsUpdate"  
  strValueName = "WUServer"  
  If RegValueExists(strKeyPath, strValueName) Then
   oReg.GetStringValue HKLM,strKeyPath,strValueName,strValue
   Resultmsg = Resultmsg & strMsg & strValue & VBCRLF
  Else
   Resultmsg = Resultmsg & strMsg & "Einstellung ist nicht konfiguriert" & VBCRLF  
  End If
 
  strMsg = "  - WU Status Server:  "  
  strKeyPath = "Software\Policies\Microsoft\Windows\WindowsUpdate"  
  strValueName = "WUStatusServer"  
  If RegValueExists(strKeyPath, strValueName) Then
   oReg.GetStringValue HKLM,strKeyPath,strValueName,strValue
   Resultmsg = Resultmsg & strMsg & strValue & VBCRLF
  Else
   Resultmsg = Resultmsg & strMsg & "Einstellung ist nicht konfiguriert" & VBCRLF  
  End If
 Else
  Resultmsg = Resultmsg & VBCRLF
 End If
Else
 Resultmsg = Resultmsg & strMsg & "Einstellung ist nicht konfiguriert" & VBCRLF  
 Resultmsg = Resultmsg & "  - Client bezieht Updates von windowsupdate.microsoft.com" & VBCRLF  
End If

strMsg = "  - TargetGroup:  "  
strKeyPath = "Software\Policies\Microsoft\Windows\WindowsUpdate"  
strValueName = "TargetGroup"  
 If RegValueExists(strKeyPath, strValueName) Then
  oReg.GetStringValue HKLM,strKeyPath,strValueName,strValue
  Resultmsg = Resultmsg & strMsg & strValue & VBCRLF & VBCRLF
 Else
  Resultmsg = Resultmsg & strMsg & "Einstellung ist nicht konfiguriert" & VBCRLF & VBCRLF  
End If

strMsg = "AU Options:  "  
strKeyPath = "Software\Policies\Microsoft\Windows\WindowsUpdate\AU"  
strValueName = "AUOptions"  
If RegValueExists(strKeyPath, strValueName) Then
 oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue
 Resultmsg = Resultmsg & strMsg & GetAUOptions(dwValue) & VBCRLF

 If dwValue = "4" Then  
  strMsg = "  - Geplanter Installationstag:  "  
  strKeyPath = "Software\Policies\Microsoft\Windows\WindowsUpdate\AU"  
  strValueName = "ScheduledInstallDay"  
  If RegValueExists(strKeyPath, strValueName) Then
   oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue
   Resultmsg = Resultmsg & strMsg & getday(dwValue) & VBCRLF
  Else
   Resultmsg = Resultmsg & strMsg & "Einstellung ist nicht konfiguriert" & VBCRLF  
  End If
 
  strMsg = "  - Geplante Installationszeit:  "  
  strKeyPath = "Software\Policies\Microsoft\Windows\WindowsUpdate\AU"  
  strValueName = "ScheduledInstallTime"  
  If RegValueExists(strKeyPath, strValueName) Then
   oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue
   Resultmsg = Resultmsg & strMsg & dwValue &":00 Uhr" & VBCRLF  
  Else
   Resultmsg = Resultmsg & strMsg & "Einstellung ist nicht konfiguriert" & VBCRLF  
  End If
 Else
   Resultmsg = Resultmsg & VBCRLF
 End If

Else
 Resultmsg = Resultmsg & strMsg & "Einstellung ist nicht konfiguriert" & VBCRLF  
 strMsg = "  - Benutzerdefinierte Einstellung:  "  
 strKeyPath = "Software\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update"  
 strValueName = "AUOptions"  
 If RegValueExists(strKeyPath, strValueName) Then
  oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue
  Resultmsg = Resultmsg & strMsg & GetAUOptions(dwValue) & VBCRLF

  If dwValue = "4" Then  
   strMsg = "    - ScheduledInstallDay:  "  
   strKeyPath = "Software\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update"  
   strValueName = "ScheduledInstallDay"  
   If RegValueExists(strKeyPath, strValueName) Then
    oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue
    Resultmsg = Resultmsg & strMsg & getday(dwValue) & VBCRLF
   Else
    Resultmsg = Resultmsg & strMsg & "Einstellung ist nicht konfiguriert" & VBCRLF  
   End If
 
   strMsg = "    - ScheduledInstallTime:  "  
   strKeyPath = "Software\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update"  
   strValueName = "ScheduledInstallTime"  
   If RegValueExists(strKeyPath, strValueName) Then
    oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue
    Resultmsg = Resultmsg & strMsg & dwValue &":00" & VBCRLF  
   Else
    Resultmsg = Resultmsg & strMsg & "Einstellung ist nicht konfiguriert" & VBCRLF  
   End If
  Else
    Resultmsg = Resultmsg & VBCRLF
  End If

 Else
  Resultmsg = Resultmsg & strMsg & "Keine Einstellungen vorhanden" & VBCRLF  
 End If
End If

strMsg = "  - NoAUShutdownOption:  "  
strKeyPath = "Software\Policies\Microsoft\Windows\WindowsUpdate\AU"  
strValueName = "NoAUShutdownOption"  
If RegValueExists(strKeyPath, strValueName) Then
 oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue
 Resultmsg = Resultmsg & strMsg & GetNoAUShutdownOption(dwValue) & VBCRLF & VBCRLF
Else
 Resultmsg = Resultmsg & strMsg & "Einstellung ist nicht konfiguriert" & VBCRLF & VBCRLF  
End If

strMsg = "AutoInstallMinorUpdates:  "  
strKeyPath = "Software\Policies\Microsoft\Windows\WindowsUpdate\AU"  
strValueName = "AutoInstallMinorUpdates"  
If RegValueExists(strKeyPath, strValueName) Then
 oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue
 Resultmsg = Resultmsg & strMsg & GetAutoInstallMinorUpdates(dwValue) & VBCRLF & VBCRLF
Else
 Resultmsg = Resultmsg & strMsg & "Einstellung ist nicht konfiguriert" & VBCRLF & VBCRLF  
End If

strMsg = "DetectionFrequency:  "  
strKeyPath = "Software\Policies\Microsoft\Windows\WindowsUpdate\AU"  
strValueName = "DetectionFrequency"  
 If RegValueExists(strKeyPath, strValueName) Then
  oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue
  Resultmsg = Resultmsg & strMsg &"Alle " & dwValue &" Stunden nach Updates suchen"& VBCRLF  
 Else
   Resultmsg = Resultmsg & strMsg & "Einstellung ist nicht konfiguriert"& VBCRLF  
 End If

strMsg = "RebootRelaunchTimeout:  "  
strKeyPath = "Software\Policies\Microsoft\Windows\WindowsUpdate\AU"  
strValueName = "RebootRelaunchTimeout"  
 If RegValueExists(strKeyPath, strValueName) Then
  oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue
  Resultmsg = Resultmsg & strMsg & dwValue &" Minuten warten, bevor zu einem Neustart aufgefordert wird"& VBCRLF  
 Else
   Resultmsg = Resultmsg & strMsg & "Einstellung ist nicht konfiguriert" & VBCRLF  
 End If

strMsg = "RebootWarningTimeout:  "  
strKeyPath = "Software\Policies\Microsoft\Windows\WindowsUpdate\AU"  
strValueName = "RebootWarningTimeout"  
 If RegValueExists(strKeyPath, strValueName) Then
  oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue
  Resultmsg = Resultmsg & strMsg & dwValue &" Minuten warten, bevor ein Neustart ausgeführt wird"& VBCRLF  
 Else
   Resultmsg = Resultmsg & strMsg & "Einstellung ist nicht konfiguriert" & VBCRLF  
End If

strMsg = "NoAutoRebootWithLoggedOnUsers:  "  
strKeyPath = "Software\Policies\Microsoft\Windows\WindowsUpdate\AU"  
strValueName = "NoAutoRebootWithLoggedOnUsers"  
If RegValueExists(strKeyPath, strValueName) Then
 oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue
 Resultmsg = Resultmsg & strMsg & GetNoAutoReboot(dwValue) & VBCRLF
Else
 Resultmsg = Resultmsg & strMsg & "Einstellung ist nicht konfiguriert" & VBCRLF  
 Resultmsg = Resultmsg & "  - Default: Benutzern wird ein 5 Minuten Countdown gegeben" & VBCRLF  
End If

strMsg = "RescheduleWaitTime:  "  
strKeyPath = "Software\Policies\Microsoft\Windows\WindowsUpdate\AU"  
strValueName = "RescheduleWaitTime"  
If RegValueExists(strKeyPath, strValueName) Then
 oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue
 If dwValue = "0" Then Resultmsg = Resultmsg & strMsg & "Deaktiviert im Wert der Einstellung: " & dwValue & VBCRLF & VBCRLF End If  
 If dwValue = "1" Then Resultmsg = Resultmsg & strMsg & dwValue &" Minute" & VBCRLF & VBCRLF End If  
 If dwValue > "1" and dwValue < "61" Then Resultmsg = Resultmsg & strMsg & dwValue &" Minuten" & VBCRLF & VBCRLF End If  
 If dwValue > "60" Then Resultmsg = Resultmsg & strMsg & "Ungültige Einstellung" & dwValue & VBCRLF & VBCRLF End If  
Else
 Resultmsg = Resultmsg & strMsg & "Einstellung ist nicht konfiguriert" & VBCRLF & VBCRLF  
End If


Resultmsg = Resultmsg & "http://www.wsus.de" & VBCRLF & "Die Infoseite zu Windows Server Updates Services"  

MsgBox Resultmsg,,strComputer

set oReg = nothing


Function GetNoAutoUpdate(Index)
 Select Case Index
  Case 0 GetNoAutoUpdate = "0 - Auto Update ist aktiviert per Policy"  
  Case 1 GetNoAutoUpdate = "1 - Auto Update ist deaktiviert per Policy"  
  Case Else GetNoAutoUpdate = "Fehler in diesem Wert"  
 End select
End Function

Function GetUseWUServer(Index)
 Select Case Index
  Case 0 GetUseWUServer = "0 - Client bezieht Updates von windowsupdate.microsoft.com"  
  Case 1 GetUseWUServer = "1 - Client bezieht Updates vom WSUS Server"  
  Case Else GetUseWUServer = "Fehler in diesem Wert"  
 End select
End Function

Function GetDay(Index)
 Select Case Index
  Case "0" GetDay = "Jeden Tag"  
  Case "1" GetDay = "Jeden Sonntag"  
  Case "2" GetDay = "Jeden Montag"  
  Case "3" GetDay = "Jeden Dienstag"  
  Case "4" GetDay = "Jeden Mittwoch"  
  Case "5" GetDay = "Jeden Donnerstag"  
  Case "6" GetDay = "Jeden Freitag"  
  Case "7" GetDay = "Jeden Samstag"  
  Case Else GetDay = "Fehler in diesem Wert"  
 End select
End Function

Function GetAUOptions(Index)
 Select Case Index
  Case "0" GetAUOptions = "0"  
  Case "1" GetAUOptions = "1 - Deaktiviert in den Benutzereinstellungen"  
  Case "2" GetAUOptions = "2 - Vor Download und Installation benachrichtigen."  
  Case "3" GetAUOptions = "3 - Autom. Downloaden, aber vor der Installation benachrichtigen."  
  Case "4" GetAUOptions = "4 - Autom. Downloaden und laut Zeitplan installieren."  
  Case "5" GetAUOptions = "5 - Lokalem Administrator ermöglichen, Einstellungen manuell zu konfigurieren."  
  case Else GetAUOptions = "Fehler in diesem Wert"  
 End select
End Function

Function GetNoAUShutdownOption(Index)
 Select Case Index
  Case 0 GetNoAUShutdownOption = "0 - 'Updates installieren und herunterfahren' wird angezeigt"  
  Case 1 GetNoAUShutdownOption = "1 - 'Updates installieren und herunterfahren' wird nicht angezeigt"  
  Case Else GetNoAUShutdownOption = "Fehler in diesem Wert"  
 End select
End Function

Function GetAutoInstallMinorUpdates(Index)
 Select Case Index
  Case 0 GetAutoInstallMinorUpdates = "0 - Automatische Updates nicht sofort installieren"  
  Case 1 GetAutoInstallMinorUpdates = "1 - Automatische Updates sofort installieren"  
  Case Else GetAutoInstallMinorUpdates = "Fehler in diesem Wert"  
 End select
End Function

Function GetNoAutoReboot(Index)
 Select Case Index
  Case "0" GetNoAutoReboot = "0 - Benutzern wird ein 5 Minuten Countdown gegeben"  
  Case "1" GetNoAutoReboot = "1 - Benutzer wird vor dem Restart benachrichtigt"  
  case Else GetNoAutoReboot = "Fehler in diesem Wert"  
 End select
End Function

Function RegValueExists(sRegKey, sRegValue)
  sRegKey = Trim(sRegKey)
  sRegValue = LCase(Trim(sRegValue))
  ' init value  
  RegValueExists = False
  If oReg.EnumValues(HKLM, sRegKey, aValueNames, aValueTypes) = 0 Then
    If Not IsNull(aValueNames) Then
      For i = 0 To UBound(aValueNames)
        If LCase(aValueNames(i)) = sRegValue Then
          RegValueExists = True
        End If
      Next
    End If
  End If
End Function

Function RegKeyExists(sRegKey)
  sRegKey = Trim(sRegKey)
  If oReg.EnumValues(HKLM, sRegKey, aValueNames, aValueTypes) = 0 Then
    RegKeyExists = True
  Else
    RegKeyExists = False
  End If
End Function
Member: ResalSR
ResalSR Jan 14, 2011 at 09:04:14 (UTC)
Goto Top
e0399afc71704e40b4f63c134bc33017
Member: Coreknabe
Coreknabe Jan 14, 2011 at 09:08:38 (UTC)
Goto Top
Und Du hast das auch selbst gelesen? Die Antwort auf Deine Frage steht da nämlich.
Member: ResalSR
ResalSR Jan 14, 2011 at 09:12:51 (UTC)
Goto Top
NoAutoRebootWith LoggedONUsers?

is das die OptionL

d.h. ich müsste die aktivieren oder wie? und die zeit dann eben auf 2 std. hochschrauben, damit der user es sicher merkt, dass neugestartet wird in spätestens 2 std. seh ich das richtig?
Member: Coreknabe
Coreknabe Jan 14, 2011 at 09:21:13 (UTC)
Goto Top
Das ist die richtige, steht da ja auch. Wie man das handhabt, ist jedem selbst überlassen, ich würde NIEMALS einen automatischen Neustart veranlassen. Beispiel: Jemand arbeitet am PC und bekommt ne Meldung, dass in zwei Stunden der PC neu gestartet wird. Schön, da hat er ja noch Zeit. Mal eben kurz nen Kaffee geholt und weitergearbeitet. Und dann hat er das mit dem Neustart auch schon vergessen. Am besten hat er dann die ganze Zeit in ner Datenbank gearbeitet. Viel Spaß!

Besser: Einstellung wählen, dass die Updates beim Herunterfahren installiert werden. Ggf. dauerts dann bei Vista oder 7 länger beim Hochfahren, je nach Umfang der Updates. Aber das ist im Vergleich zum obigen Beispiel absolut zu vernachlässigen.

Achja, was die Treiber angeht: Das sind meines Wissens optionale Updates, die kannst Du in der WSUS-Konsole deaktivieren.
Member: ResalSR
ResalSR Jan 14, 2011 at 09:50:56 (UTC)
Goto Top
Oh ja....die hatten das bei allen OU's (Abteilungen intern) gesetzt, nur bei uns (Informatik) noch nicht -.-
Weshalb sich auch noch keiner beschwert hat face-smile

Ich hab die Optionen der WSUS Konsole durchforstet aber finde nichts dergleichen, das hier für Treiberinstallationen die WU's nicht durchsucht werden sollen.

Hast du hier evtl. noch ne Klickreihenfolge wo ich da hinmuss für? *nett-frag*
Member: ResalSR
ResalSR Jan 14, 2011 at 09:57:20 (UTC)
Goto Top
Ok, ich habs per GPO gefunden und deaktiviert.

DAnke soweit und schönes WE !
Member: Coreknabe
Coreknabe Jan 14, 2011 at 10:07:04 (UTC)
Goto Top
Das man das mit GPO regeln kann, war mir neu, wüsste also auch nicht, wo das zu finden ist. Aber fein, dass Du es gefunden hast. face-wink

Alternative: WSUS-Konsole --> Optionen --> Produkte und Klassifizierungen --> Klassifizierungen --> Haken bei Treiber entfernen

Macht hier auch absolut Sinn, weil man sonst sehr viel mehr Plattenplatz auf dem WSUS braucht, wenn Treiber vorgehalten werden...

Dir auch ein schönes WE!
Member: ResalSR
ResalSR Jan 14, 2011 at 10:32:11 (UTC)
Goto Top
Unter Computerrichtlinien -> Administrative Vorlagen -> System -> Internetkomm. - > internetkomm. -> "Suche nach Gerätetribern auf WIndows Update deaktivieren".

Gruß"!
Member: DerWoWusste
DerWoWusste Jan 14, 2011 at 13:52:51 (UTC)
Goto Top
Nächstes Mal auf dem betroffenen PC rsop.msc ausführen - dann hättest Du gleich gesehen, dass er die Policy (bzw. die eine Einstellung zumindest) noch nicht übernommen hatte.
Member: Coreknabe
Coreknabe Jan 14, 2011 at 17:18:27 (UTC)
Goto Top
Aber erst ab Vista SP1. Und nicht so übersichtlich und schnell zu sehen.