Hallo steffen_w.
steffen_w. schrieb on 12.10.11 um 10:08:44:
Und zwar möchte ich das Freigabedatum eines Updates für eine bestimmte Computergruppe auslesen.
Also hier folgende ergänzenden Hinweise zur Lösung Deines (Unseres?
) Problemes:Theorie:Es gibt zu jedem Update zwei "globale" Datumsangaben:
1.) Veröffentlichungsdatum => wird erzeugt, wenn die Metadaten zum Update auf den MS-Servern für WSUS im Downloadcenter (Inet) eingefügt werden.
2.) Eingangsdatum => wird erzeugt, wenn die Metadaten zum Update durch Synchronisation in der SUS-DB Deines WSUS-Servers eingefügt werden.
D.h. mit Genehmigung oder dem Download der dazugehörenden Dateien hat beides nicht wirklich was zu tun. Wie zuvor schon beschrieben wurde (Sunny bzw. Uwe), ist
nur im Fall einer automatischen Genehmigungsregel das Eingangsdatum = Genehmigungsdaten = Downloaddatum.
Du fragst ja aber nach einer besonderen Relation zwischen Gruppe und Update !!! Sowas kann aus der Logik heraus in einer herkömmlichen Updateansicht als Listung von Updates ohne Gruppenbezug nicht aufgelistet werden, da es hier ja auch eine spezielle Gruppe betrifft.
Dann hilft theoretisch ein Updatebericht zu einem ausgewählten Update.
Auf der 1. Seite eines Updateberichtes ist eine Tabelle aller Computergruppen mit der jeweils dazugehörenden Genehmigungssituation (incl. Vererbungshinweis) und ... der "Administrator", der die Genehmigung erteilt hat. Warum hilft das nur theoretisch? Tja ... das Datum ist nicht mit dabei.
Jetzt kommt der
"Witz vom Herrn" .. das Datum ist aber dennoch vorhanden! Es war nur nicht würdig genug, um Eingang in das Standardberichtsschema zu finden. Grmpf

Nur die Frage ... wie ran kommen. Und die einzige Lösung hast Du selber vorformuliert:
steffen_w. schrieb on 12.10.11 um 10:08:44:
... auslesen. Ist das möglich?
Antwort: JA ... aber nur mit einem selbst geschriebenen Programm, dass direkt das WSUS-API (Visual Studio C#/VB/C++, PowerShell, ...) nutzt, denn das Suchen in SUSDB-Tabellen ist ein mühsamer und schlechter - sagen wir mal: nicht kunstgerechter - Weg.
Jetzt zur Praxis:Das Objekt, dass Du sucht ist
IUpdateApproval mit der Eigenschaft
CreationDate => das Erzeugungsdatum einer Genehmigung eines bestimmten Updates für eine bestimmte Gruppe.
Siehe auch hier die Details:
(Du musst Dich Einloggen oder Registrieren um Multimediadateien oder Links zu sehen).Ich empfehle Dir folgende programmatische Vorgehensweise:
1.) Updateserver kontakten => IUpdateServer über Class AdminProxy
2.) alle Computergruppen ermitteln => IComputerTargetGroupCollection über GetComputerTargetGroups()
3.) gewünschte Computergruppe A ermitteln => foreach => IComputerTargetGroup
4.) einen neuen Suchfilter erzeugen => new UpdateScope
5.) eine neue Computergruppenliste erzeugen => new IComputerTargetGroupCollection
6.) das ermittelte Gruppenobjekt dieser hinzufügen => IComputerTargetGroupCollection.Add(IComputerTargetGroup)
7.) die gewünschte Gruppe im Filter vereinbaren durch hinzufügen der neuen Computergruppenliste mit der einzelnen gefundenen Gruppe => UpdateScope.ApprovedComputerTargetGroups = IComputerTargetGroupCollection
8.) die Genehmigungssituation im Filter festlegen => UpdateScope.ApprovedStates = ApprovedStates.LatestRevisionApproved
9.) Alle Genehmigungen mit diesem Filter ermitteln => IUpdateServer.GetUpdateApprovals(UpdateScope)
10.) alle gefundenen Genehmigungen durchgehen und die Updates mit Datum (!!! oh hier ist es ja) auslesen => foreach => IUpdateApproval.CreationDate bzw. IUpdateApproval.GetUpdate()
Leider kann ich Dir den Quellcode nicht schnell zusammenschreiben ... mein Entwicklungssystem daheim hat ausgehaucht ... und auf Arbeit ist einfach keine Zeit für der Art nette Herausforderungen.

Probier es doch mal selbst ... Du kannst ja nur dazulernen.

Gruß Dani