Heißes Thema (mehr als 10 Antworten) Inventory-Funktion (Gelesen: 8156 mal)
DESoft
WSUS Experte
*****
Offline


I Love WSUS!<br />

Beiträge: 702
Standort: Magdeburg
Mitglied seit: 24.07.08
Inventory-Funktion
15.04.09 um 16:30:46
Beitrag drucken  
Hallo WSUS-Freunde,

beim analysieren der SUSDB sind mir diverse Tabellen für die Speicherung von HW-Inventory-Informationen aufgefallen.
Offensichtlich sollen Informationen zum WSUS-Client via WMI ausgelesen und in der SUSDB gebunkert werden.
Eine Anzeige solcher Infos ist in der Oberfläche nicht realisiert und Daten werden auch noch nicht eingezogen. Griesgrämig

Hat jemand weitere Erkenntnisse zu diesem Feature ?

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


I Love WSUS!<br />

Beiträge: 702
Standort: Magdeburg
Mitglied seit: 24.07.08
Re: Inventory-Funktion
Antwort #1 - 12.10.09 um 17:37:16
Beitrag drucken  
So nun mal was NEUES:

Ich habs rausgefunden ... mit dem folgenden PS-Script kann man die Inventory-Funktionalität des WSUS zuschalten.

Der WU-Agent sammelt dann lokal nach der aktuellen InventoryRule via WMI Informationen zusammen und schickt diese an den WSUS-Server.

Die Tabelle dbo.tbInventoryPropertyInstance in der SUSDB werden dann entsprechend gefüttert.

Die Informationen können im SQL-Server Management Studio als Sicht PUBLIC_VIEWS.vComputerInventory mit Computerbezug detailiert aufgelistet gesichtet werden. Laut lachend

Code
# Variables - set these to fit your needs
###############################################################################
# The server name of your WSUS server
$serverName = 'localhost'

# use SSL connection?
$useSecureConnection = $False

# the port number of your WSUS IIS website
$portNumber = 80

# use Client Inventory function ?
# $useClientInventory = $False
$useClientInventory = $True

# Script - don't change anything below this line!
###############################################################################

# load WSUS framework
[void][reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration")   

# connect to specified WSUS server
$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::getUpdateServer($serverName, $useSecureConnection, $portNumber)   

# get Configuration of WSUS server
$WsusConfig = $wsus.GetConfiguration()

# set Collect status of WSUS server
$WsusConfig.CollectClientInventory = $useClientInventory

# save Configutation of WSUS server
$WsusConfig.Save()

 



Achtung ... mit der Aktivierung ist ein Anwachsen der DB je nach Umfang der verwalteten Client zu erwarten. Cool

Für die weitere Verarbeitung der verfügbaren Informationen steht noch keine UI zu Verfügung.
Noo da schaun wer ma ...  Laut lachend

Beste Grüße Dani
  
Zum Seitenanfang
 
DESoft
WSUS Experte
*****
Offline


I Love WSUS!<br />

Beiträge: 702
Standort: Magdeburg
Mitglied seit: 24.07.08
Re: Inventory-Funktion
Antwort #2 - 12.10.09 um 18:56:42
Beitrag drucken  
Nachtrag:

Die Aktualisierungsinformationen von Clients werden von untergeordneten WSUS-Servern auf übergeordnete WSUS-Server repliziert.
Die echten Inventory-Daten werden aber ausschließlich auf dem WSUS-Server gehalten, der den Client verwaltet.

Werden Inventory-Daten von einem bestimmten Client z.Bsp. am Masterserver erwartet, ist dort der entsprechende WSUS-Server (Parentserver) zu ermitteln und dann die Daten remote von diesem abzurufen.

Eine Explosion der SUSDB des Masters ist insoweit also nicht zu erwarten. Zwinkernd

Pro Client werden ca 400-550 Datensatze in die Datenbank eingefügt. Entscheidend ist die HW-Ausstattung und die Anzahl der installierten SW.  Laut lachend

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: Inventory-Funktion
Antwort #3 - 13.10.09 um 09:29:20
Beitrag drucken  
Das klingt spannend.
Danke
  
Zum Seitenanfang
 
Sunny
Microsoft MVP
*****
Offline



Beiträge: 15134
Mitglied seit: 11.02.07
Geschlecht: männlich
Re: Inventory-Funktion
Antwort #4 - 13.10.09 um 09:49:57
Beitrag drucken  
Coole Sache, Danke. Zwinkernd
  
Zum Seitenanfang
 
DESoft
WSUS Experte
*****
Offline


I Love WSUS!<br />

Beiträge: 702
Standort: Magdeburg
Mitglied seit: 24.07.08
Re: Inventory-Funktion
Antwort #5 - 14.10.09 um 17:28:21
Beitrag drucken  
So - und nun ein kleines Anwendungsbeispiel. Smiley

Anbei ein kleines PS-Script, das die MAC- i.V.m. den IP-Adressen des im WSUS registrierten Netzwerkadapters des Clients ermittelt und im INI-Format bereitstellt.  Zwinkernd

Da der WSUS nicht an DNS-Suffixen gebunden ist ... und Namen in verschiedenen Namensspaces identisch sein können ... kann man mit dem Suffix eine Vorselection treffen.
Der Computername kann auch mit WildChars mehrere System beschreiben ...

mit Cmd aufrufen und Ergebnis in Datei umleiten ...
Code
Powershell.exe ./wsus_get_MAC_IP.ps1 > ./wol.ini 



Code
# The server name of your WSUS server
$serverName = 'localhost';

# use SSL connection?
$useSecureConnection = $False;

# the port number of your WSUS IIS website
$portNumber = 80;

# set operated DomainNameSpace (DNS-Suffix)
$DnsSuffix = 'myfirma.de';

# set NetBiosName - use WildChars '*' or '?'
$ComputerName = 'MyWks0*';

# =========================================================================

# load WSUS framework
[void][reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration")   

# connect to specified WSUS server
$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::getUpdateServer($serverName, $useSecureConnection, $portNumber)

$computerScope = new-object Microsoft.UpdateServices.Administration.ComputerTargetScope;
$computerScope.NameIncludes = '.' + $DnsSuffix

$Computers = $WSUS.GetComputertargets($computerScope);

$Computers | foreach-object {
  if ( $_.FullDomainName -like ($ComputerName + '.*' )) {
    $Computer = $wsus.GetComputerTarget($_.Id);
    $ComputerIp = $Computer.IPAddress;
    $NetIdx = 0;
    '[' + $Computer.FullDomainName + ']';

    $InventoryItems = $_.GetInventory('Win32_NetworkAdapterConfiguration');
    $InventoryItems | foreach-object {
      $InventoryProperties = $_.Properties;
      $InventoryProperties | foreach-object {
        if ('Index' -like $_.Name) {$IpIdx = $_.Value};
        if (('IPAddress' -like $_.Name) -and ($_.Value -like $ComputerIp)) {
          $NetIdx = $IpIdx;
    } } }

    $InventoryItems = $_.GetInventory('Win32_NetworkAdapter');
    $InventoryItems | foreach-object {
      $InventoryProperties = $_.Properties;
      $Idx = 0;
      $InventoryProperties | foreach-object {
        if ('Index' -like $_.Name) {$MacIdx = $_.Value};
        if (('MACAddress' -like $_.Name) -and ($_.Value -like '??:??:??:??:??:??') -and ($MacIdx -eq $NetIdx)) {
          '   HostName=' + $Computer.FullDomainName;
          '   MACAddress=' + $_.Value;
          '   IPAddress=' + $ComputerIp;
    } } }

} }

$InventoryProperties = $Null
$InventoryItems = $Null
$Computers = $Null
$computerScope = $Null
$wsus = $Null


 



Ihr dürft mal raten, wofür man das wohl braucht.  Augenrollen

Viel Spass.

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: Inventory-Funktion
Antwort #6 - 14.10.09 um 17:39:17
Beitrag drucken  
Hehe super,
der Name WOL.ini sagt ja schon alles  Zwinkernd
  
Zum Seitenanfang
 
DESoft
WSUS Experte
*****
Offline


I Love WSUS!<br />

Beiträge: 702
Standort: Magdeburg
Mitglied seit: 24.07.08
Re: Inventory-Funktion
Antwort #7 - 14.10.09 um 17:50:44
Beitrag drucken  
UMeadow schrieb on 14.10.09 um 17:39:17:
sagt ja schon alles 

Ha - Ich werd mich doch mit Dir nicht rumstreiten ... Laut lachend

Naja ... mit der Formatierung von Strings 00:00:... => 00-00-... bin ich noch nicht so fit. Und die Ausgabe in eine Datei im PS gibt einem das Gefühl ... wieder in der Steinzeit anzufangen.  Griesgrämig

Aber ... alles nur Herausforderungen. Bald kommt VS 2010 ... dann wird alles besser - hoffe ich. hä?

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


I Love WSUS!<br />

Beiträge: 702
Standort: Magdeburg
Mitglied seit: 24.07.08
Re: Inventory-Funktion
Antwort #8 - 14.10.09 um 18:34:24
Beitrag drucken  
So und hier ist jetzt auch der Hintergrund des Anliegens. Wurde also schon mehrfach diskutiert.

(Du musst Dich Einloggen oder Registrieren um Multimediadateien oder Links zu sehen).

Das Suchen dauert immer ein bissel bei mir. Zwinkernd

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


I Love WSUS!<br />

Beiträge: 702
Standort: Magdeburg
Mitglied seit: 24.07.08
Re: Inventory-Funktion
Antwort #9 - 14.10.09 um 18:42:12
Beitrag drucken  
Noch ein Nachtrag aus den letzten Testungen:

Wird ein Client im WSUS gelöscht, verschwinden auch sauber die Inventorydaten. Es läuft also keine Müllhalde auf. Konsequent MS!

Nur der Umgang mit den Daten ist etwas sparsam bedacht und hölzern. Da muss man wohl doch besser mit Record-Strukturen ran.
Fortsetzung folgt ...  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: Inventory-Funktion
Antwort #10 - 15.10.09 um 10:25:15
Beitrag drucken  
Hi Dani,
muss man einstellen was da inventarisiert wird oder wird das per Script gesteuert oder steht das in einer Tabelle?
Ich habe mich damit noch nicht so sehr auseiandergesetzt, da wir bei uns ein anderes Tool einsetzen. Aber eine eingebaute Inventarisierung hat ja auch was Smiley

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


I Love WSUS!<br />

Beiträge: 702
Standort: Magdeburg
Mitglied seit: 24.07.08
Re: Inventory-Funktion
Antwort #11 - 15.10.09 um 10:35:47
Beitrag drucken  
Hi Uwe,

das ist im WSUS als InventoryRule in einer XML-Datei festgelegt aber auch in der SUSDB gespeichert.

Zur Zeit handelt es sich wohl nur um eine Default-Definition von MS.

Die Rule wird im IIS des WSUS-Web als Site Inventory mit der Datei InventoryRules.cab veröffentlicht und dort den Clients zum Download via WinHttp angeboten.

Diese Datei ist von MS zertifiziert ... da der Agent zur Sicherheit nur zertifizierte Dateien akzeptiert.

Editieren ist so erstmal nicht möglich ... aber zur Klärung, was alles eingesammelt wird, kann man schon mal reinschauen.  Zwinkernd

PS: Wenn man Dateien anderer SW-Hersteller ins WSUS bekommt ... kann man auch neue Rules integrieren. Das schein ein ähnlicher Mechanismus im WSUS zu sein. Laut lachend

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: Inventory-Funktion
Antwort #12 - 15.10.09 um 11:12:44
Beitrag drucken  
Danke Dani,
jetzt noch ein bischen Zeit, dann könnte ich mir das auch mal genauer ansehen Zwinkernd
  
Zum Seitenanfang
 
DESoft
WSUS Experte
*****
Offline


I Love WSUS!<br />

Beiträge: 702
Standort: Magdeburg
Mitglied seit: 24.07.08
Re: Inventory-Funktion
Antwort #13 - 15.10.09 um 11:31:56
Beitrag drucken  
Hallo Uwe,

einfach auf dem WSUS unter %ProgramFiles%\Upsdate Services\Inventory die InventoryRule.cab entpacken.
Darin ist die InventoryRule.xml mit den Definitionen für den WU-Agent.

Die "allgemeinen" Info's werden via WMI über cimv2 ausgelesen und die Softwareanalyse läuft über ein internes API des Clients.

Die ganze Info-Menge wird vom Client an den Server geschickt, und der sortiert das nach Schema-F in seine SUSDB-Tables ein.

Fazit:
Was über WMI erreichbar ist, könnte theoretisch in der Rule zusätzlich definiert werden. Aber die Zertifizierung ... naja ...
erlaubt kein editieren in dieser Datei.
Man muss also eine eigene Rule-Datei in WSUS via .Net-API importieren und diese dann aktivieren.
Diese Rule erhält dann im WSUS ihre eigenen GUI und diese Datei wird in einer zertifizierten CAB-Datei im IIS (Bereich WSUS) veröffentlicht. Smiley

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: Inventory-Funktion
Antwort #14 - 15.10.09 um 13:14:57
Beitrag drucken  
Ja Dani,
mit dem  Thema zertifizieren muss ich mich sowieso demnächst befassen, wenn ich das WSUS Injektion Tool testen will.
Angesehen hab ich mir die InventoryRule.cab schon, sind erstmal die Standardsachen enthalten, der Aufbau ist eigentlich relativ simpel.
Na mal sehen.
Danke ersteinmal für die Infos.
Gruß Uwe
  
Zum Seitenanfang
 
Bookmarks: Facebook Google Google+ Linked in Twitter Yahoo
 



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