Seitenindex umschalten Seiten: [1] 2  Thema versendenDrucken
Heißes Thema (mehr als 10 Antworten) Updatefreigabedatum einsehen (Gelesen: 6303 mal)
steffen_w.
WSUS Neuling
Offline


I Love WSUS!

Beiträge: 4
Mitglied seit: 09.12.09
Geschlecht: männlich
Updatefreigabedatum einsehen
12.10.11 um 10:08:44
Beitrag drucken  
Hallo,

als WSUS Neuling habe ich eine Frage, da ich über Google oder hier im Forum nichts gefunden habe... Und zwar möchte ich das Freigabedatum eines Updates für eine bestimmte Computergruppe auslesen. Ist das möglich?

Grüße  Smiley
  
Zum Seitenanfang
 
Sunny
Microsoft MVP
*****
Offline



Beiträge: 15134
Mitglied seit: 11.02.07
Geschlecht: männlich
Re: Updatefreigabedatum einsehen
Antwort #1 - 12.10.11 um 10:16:45
Beitrag drucken  
Mach einen Rechtsklick auf das Pane und lass dir weitere Spalten einblenden. (Du musst Dich Einloggen oder Registrieren um Multimediadateien oder Links zu sehen). Das Eingangsdatum suchst Du.
  
Zum Seitenanfang
 
steffen_w.
WSUS Neuling
Offline


I Love WSUS!

Beiträge: 4
Mitglied seit: 09.12.09
Geschlecht: männlich
Re: Updatefreigabedatum einsehen
Antwort #2 - 12.10.11 um 12:00:35
Beitrag drucken  
Danke für die schnelle Hilfe. Aber ist das Datum nicht das Datum, an welchem Tag der WSUS Server das Update abgeholt hat?

Ich hol mal etwas weiter aus  Laut lachend
Mir wurde der WSUS Server übertragen und ich soll mich nun darum kümmern. Die Installation, Konfigurtaion und Einrichtung hat jemand anders gemacht.
Insgesamt gibt es 8 Gruppen von denen ich mal ein paar aufzähle... Ich habe grob Gruppen für Clients und Server, welche sich nocheinmal z.B. in Windows Server 2003 und 2008 unterscheiden. Bei den Clients habe ich eine Gruppe A , welche die Testgruppe ist und sich ausschließlich Admin PCs bzw. Testmaschinen befinden, und die alle Updates bekommt. Eine Gruppe B, welche die Updates bekommt die sie benötigt und in der sich teils Admin PCs und teils User PCs befinden. Dann noch eine Gruppe C in der sich die restlichen Clients befinden.

Und jetzt würde ich gerne nachschauen, wann ich ein Update für die Gruppe A freigegeben habe, und dieses wenn es nach einem gewissen Zeitraum ohne Probleme läuft für die Gruppe B freigeben usw.
  
Zum Seitenanfang
 
Sunny
Microsoft MVP
*****
Offline



Beiträge: 15134
Mitglied seit: 11.02.07
Geschlecht: männlich
Re: Updatefreigabedatum einsehen
Antwort #3 - 12.10.11 um 12:22:51
Beitrag drucken  
steffen_w. schrieb on 12.10.11 um 12:00:35:
Danke für die schnelle Hilfe. Aber ist das Datum nicht das Datum, an welchem Tag der WSUS Server das Update abgeholt hat?


Doch, das ist das Datum an dem der WSUS das Update gedownloadet hat. Steht sogar die Uhrzeit dabei. Hast Du denn das Datum schon einblenden lassen oder weshalb fragst Du nach?

steffen_w. schrieb on 12.10.11 um 12:00:35:
Und jetzt würde ich gerne nachschauen, wann ich ein Update für die Gruppe A freigegeben habe, und dieses wenn es nach einem gewissen Zeitraum ohne Probleme läuft für die Gruppe B freigeben usw. 


Wenn ein Update erstmals freigegeben wurde, wird es gedownloadet. Dieses Datum mit Uhrzeit steht da drin, es ist also genau das was Du brauchst. Das kannst Du natürlich auch in ca. 1 Minute selbst feststellen. Zwinkernd
  
Zum Seitenanfang
 
steffen_w.
WSUS Neuling
Offline


I Love WSUS!

Beiträge: 4
Mitglied seit: 09.12.09
Geschlecht: männlich
Re: Updatefreigabedatum einsehen
Antwort #4 - 12.10.11 um 14:03:53
Beitrag drucken  
Ich habe das Eingangsdatum einblenden lassen, jedoch ändert es sich nicht, auch nicht wenn ich auf "Aktualisieren" klicke. Entweder bin ich zu intelligent, oder es ändert sich einfach nicht.
  
Zum Seitenanfang
 
Sunny
Microsoft MVP
*****
Offline



Beiträge: 15134
Mitglied seit: 11.02.07
Geschlecht: männlich
Re: Updatefreigabedatum einsehen
Antwort #5 - 12.10.11 um 14:38:55
Beitrag drucken  
steffen_w. schrieb on 12.10.11 um 14:03:53:
Ich habe das Eingangsdatum einblenden lassen, jedoch ändert es sich nicht, auch nicht wenn ich auf "Aktualisieren" klicke. Entweder bin ich zu intelligent, oder es ändert sich einfach nicht.


Das Eingangsdatum mit der Uhrzeit ist gleichzeitig das Genehmigungsdatum und die dazu passende Uhrzeit. Es wird nur das Datum und die Uhrzeit angezeigt, an der das Update das erste Mal genehmigt wurde. So hab ich dich in (Du musst Dich Einloggen oder Registrieren um Multimediadateien oder Links zu sehen). auch verstanden.

Und nein, IMHO kannst Du das Datum nicht auslesen, an dem Du das Update für eine zweite Gruppe freigegeben hast. Es gibt nur dieses eine Datum.
  
Zum Seitenanfang
 
UMeadow
WSUS Spezialist
*****
Offline


I Love WSUS!

Beiträge: 1381
Standort: Berlin
Mitglied seit: 22.01.08
Geschlecht: männlich
Re: Updatefreigabedatum einsehen
Antwort #6 - 12.10.11 um 14:56:49
Beitrag drucken  
Sunny schrieb on 12.10.11 um 14:38:55:
Das Eingangsdatum mit der Uhrzeit ist gleichzeitig das Genehmigungsdatum 

Einspruch Euer Ehren, das Eingangsdatum ist IMHO das Datum an dem der WSUS Server das Update gedownloaded hat, außerdem gibt es noch das Veröffentlichungsdatum, das ist dann das Datum wo MS das Update zum Download freigegeben hat.

steffen_w. schrieb on 12.10.11 um 12:00:35:
Und jetzt würde ich gerne nachschauen, wann ich ein Update für die Gruppe A freigegeben habe

Das kannst Du evtl. nur indirekt machen, indem Du in der Grupper nachsiehst, wann das Update installiert wurde, das geht allerdings nicht als Übersicht in der WSUS - Konsole.
  
Zum Seitenanfang
 
Sunny
Microsoft MVP
*****
Offline



Beiträge: 15134
Mitglied seit: 11.02.07
Geschlecht: männlich
Re: Updatefreigabedatum einsehen
Antwort #7 - 12.10.11 um 15:08:48
Beitrag drucken  
UMeadow schrieb on 12.10.11 um 14:56:49:
Sunny schrieb on 12.10.11 um 14:38:55:
Das Eingangsdatum mit der Uhrzeit ist gleichzeitig das Genehmigungsdatum 

Einspruch Euer Ehren, das Eingangsdatum ist IMHO das Datum an dem der WSUS Server das Update gedownloaded hat,


Dann gib ein Update erstmals frei, welches Datum und welche Uhrzeit siehst Du? Zwinkernd Das Eingangsdatum kann man IMHO auch mit dem ersten Genehmigungsdatum gleichsetzen.
  
Zum Seitenanfang
 
UMeadow
WSUS Spezialist
*****
Offline


I Love WSUS!

Beiträge: 1381
Standort: Berlin
Mitglied seit: 22.01.08
Geschlecht: männlich
Re: Updatefreigabedatum einsehen
Antwort #8 - 12.10.11 um 15:18:26
Beitrag drucken  
Sunny schrieb on 12.10.11 um 15:08:48:
Dann gib ein Update erstmals frei, welches Datum und welche Uhrzeit siehst Du?Das Eingangsdatum kann man IMHO auch mit dem ersten Genehmigungsdatum gleichsetzen.

Ja sicher, aber nur wenn man die Updates nicht automatisch genehmigt denke ich.  Smiley
  
Zum Seitenanfang
 
Sunny
Microsoft MVP
*****
Offline



Beiträge: 15134
Mitglied seit: 11.02.07
Geschlecht: männlich
Re: Updatefreigabedatum einsehen
Antwort #9 - 12.10.11 um 15:35:43
Beitrag drucken  
UMeadow schrieb on 12.10.11 um 15:18:26:
Sunny schrieb on 12.10.11 um 15:08:48:
Dann gib ein Update erstmals frei, welches Datum und welche Uhrzeit siehst Du?Das Eingangsdatum kann man IMHO auch mit dem ersten Genehmigungsdatum gleichsetzen.

Ja sicher, aber nur wenn man die Updates nicht automatisch genehmigt denke ich.  Smiley


Auch beim automatischen genehmigen wird das Genehmigungsdatum und die Zeit eingetragen, zu der der Job gelaufen ist.

  
Zum Seitenanfang
 
DESoft
WSUS Experte
*****
Offline


I Love WSUS!<br />

Beiträge: 702
Standort: Magdeburg
Mitglied seit: 24.07.08
Re: Updatefreigabedatum einsehen
Antwort #10 - 13.10.11 um 00:58:55
Beitrag drucken  
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?  Durchgedreht ) 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.  Ärgerlich

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  Ärgerlich Ärgerlich

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.  Zwinkernd

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.  weinend

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

Gruß Dani
 
  
Zum Seitenanfang
 
UMeadow
WSUS Spezialist
*****
Offline


I Love WSUS!

Beiträge: 1381
Standort: Berlin
Mitglied seit: 22.01.08
Geschlecht: männlich
Re: Updatefreigabedatum einsehen
Antwort #11 - 13.10.11 um 13:15:18
Beitrag drucken  
Oh Dani, Du bist so gut  Smiley Das hast Du gut formuliert.

DESoft schrieb on 13.10.11 um 00:58:55:
mein Entwicklungssystem daheim hat ausgehaucht 


Das ist schade, aber ich hoffe Du bekommst das wieder hin, damit wir weiter von Deinen Codes profitieren können.  Zwinkernd

Gruß Uwe
  
Zum Seitenanfang
 
steffen_w.
WSUS Neuling
Offline


I Love WSUS!

Beiträge: 4
Mitglied seit: 09.12.09
Geschlecht: männlich
Re: Updatefreigabedatum einsehen
Antwort #12 - 13.10.11 um 16:01:03
Beitrag drucken  
@DESoft: Vielen Dank für die Antwort! Und das um die Uhrzeit Laut lachend
Ich werde es mal probieren!

Gruß
  
Zum Seitenanfang
 
DESoft
WSUS Experte
*****
Offline


I Love WSUS!<br />

Beiträge: 702
Standort: Magdeburg
Mitglied seit: 24.07.08
Re: Updatefreigabedatum einsehen
Antwort #13 - 13.10.11 um 18:47:06
Beitrag drucken  
steffen_w. schrieb on 13.10.11 um 16:01:03:
Vielen Dank für die Antwort! Und das um die Uhrzeit 


Bitte, kein Problem ... hat mir auch geholfen.
Mir war das schnurlose Tel hinter die Schrankwand gefallen. weinend

Scheiiiiiii.... Pssssssst! Is doch Nacht. Ärgerlich

Ich musste irgend etwas Sinnvolles machen um mich abzulenken. Zwinkernd

Ausräumen, Wegrücken, Stecken suchen, Tel hangeln, Zurückrücken, Einräumen ... und das in der Nacht ... ich wäre sonst geplatz ... und die Nachbarn wollten doch nur schlafen.  Durchgedreht

Alles wird gut ... nix wird besser.

Gruß Dani
  
Zum Seitenanfang
 
DESoft
WSUS Experte
*****
Offline


I Love WSUS!<br />

Beiträge: 702
Standort: Magdeburg
Mitglied seit: 24.07.08
Re: Updatefreigabedatum einsehen
Antwort #14 - 17.10.11 um 18:34:53
Beitrag drucken  
Hi,

und hier mal ein C#-Snippet aus einem erprobten Testprogramm:

Code
using System.Data;
using Microsoft.UpdateServices.Administration;

...

        public string _WuServer = "<MyWsusServer>";
        public bool _WuSSL = false;
        public int _WuPort = 80;

        public string _GroupName = "<MyWsusComputerGroup>";
        public bool _WithParents = false;

        private DataSet _DataStore;
        private const string _TbName = "TB_APPROVALS";

        private bool CreateDataStore()
        {
            if (_DataStore == null) _DataStore = new DataSet();
            if (_DataStore.Tables.Count == 0) _DataStore.Tables.Add(new DataTable(_TbName));
            DataTable _Store = _DataStore.Tables[_TbName];
            if (_Store == null) return false;
            DataColumn _PKCol = _Store.Columns.Add("UPDATE_ID", typeof(Guid));
            _PKCol.DefaultValue = new Guid();
            _Store.Columns.Add("UPDATE_REVISION", typeof(string));
            _Store.Columns.Add("UPDATE_TITLE", typeof(string));
            _Store.Columns.Add("APPROVAL_DATE", typeof(string));
            _Store.Columns.Add("APPROVAL_BY", typeof(string));
            _Store.PrimaryKey = new DataColumn[] { _PKCol };
            return true;
        }

        private bool LocateApprovalInfos(out int Groups)
        {
            Groups = -1;
            try
            {
                IUpdateServer _Wsus = AdminProxy.GetUpdateServer(_WuServer, _WuSSL, _WuPort);
                ComputerTargetGroupCollection _CTGColl = _Wsus.GetComputerTargetGroups();
                UpdateScope _US = new UpdateScope();
                _US.ApprovedStates = ApprovedStates.LatestRevisionApproved;
                foreach (IComputerTargetGroup _CTG in _CTGColl)
                {
                    if (_CTG.Name.ToLower() == _GroupName.ToLower())
                    {
                        _US.ApprovedComputerTargetGroups.Add(_CTG);
                        IComputerTargetGroup _CTGCurrent = _CTG;
                        if (_WithParents)
                        {
                            while (!ComputerTargetGroupId.AllComputers.Equals(_CTGCurrent.Id))
                            {
                                _CTGCurrent = _CTGCurrent.GetParentTargetGroup();
                                _US.ApprovedComputerTargetGroups.Add(_CTGCurrent);
                            }
                        }
                        break;
                    }
                }
                Groups = _US.ApprovedComputerTargetGroups.Count;
                UpdateApprovalCollection _UAC = _Wsus.GetUpdateApprovals(_US);
                _DataStore.Tables[_TbName].Rows.Clear();
                foreach (IUpdateApproval _UA in _UAC)
                {
                    IUpdate _Updt = _UA.GetUpdate();
                    if (!_DataStore.Tables[_TbName].Rows.Contains(_Updt.Id.UpdateId))
                    {
                        _DataStore.Tables[_TbName].Rows.Add(new object[] { _Updt.Id.UpdateId, _Updt.Id.RevisionNumber.ToString(),
                        _Updt.Title, _UA.CreationDate.ToLocalTime().ToString("dd.MM.yyyy HH:mm"), _UA.AdministratorName });
                    }
                }
                return true;
            }
            catch
            {
                return false;
            }
        }
 



Die Aufschlüsselung einer einzelnen Computergruppe liefert nur die direkt erteilten Genehmigungen zurück. D.h. die Vererbung wird nicht berücksichtigt. Um aber alle auf eine bestimmte Gruppe erteilten Genehmigungen aufzuschlüsseln, erweitert man die Suche durch hinzufügen der übergeordneten Gruppen. Dazu wird die Funktion
GetParentTargetGroup() verwendet. Die Rootgruppe "All Computers" hat keine Parentgroup und ist damit ideal zum Aussteigen aus der Schleife geeignet.

Ok ... übersetzen in PS etc. sollte nun nicht mehr schwer sein. Zwinkernd

Gruß Dani
  
Zum Seitenanfang
 
Seitenindex umschalten Seiten: [1] 2 
Thema versendenDrucken
Bookmarks: Facebook Google Google+ Linked in Twitter Yahoo
 



Nutzungsbedingungen | Datenschutz
Kontakt | RSS | Feedback | Impressum
Facebook | News einsenden