SCCM 2007 Hardware Inventory og bruk av Management Object Format

By , 1 mai, 2010 00:35
Hvorfor utvide Hardware Inventory?
System Center Configuration Manager har to funksjoner for datainnsamling. Dette er Software Inventory og Hardware Inventory. Software Inventory spør etter filer på maskinen, mens Hardware Inventory spør etter Registry nøkler og WMI informasjon fra maskinen. Jeg vil i denne artikkelen fokusere på Hardware Inventory i SCCM 2007, men overlapper også funksjonalitet i SMS 2003 da virkemåte for Hardware Inventory bygger på samme teknologi.

Hardware Inventory er funksjonalitet i SMS og SCCM som gir mulighet for innsamling av maskinvaredata. Oversikt og kontroll av maskinvare i organisasjonen er for enkelte kun en tilleggsfunksjonalitet som kan være nyttig i visse sammenhenger. Andre har krav som forplikter å kunne fremlegge dokumentasjon over hvilke og hvor mye maskinvare som finnes i sin infrastruktur. Spesielt er maskinvarekontroll viktig i miljøer med krav til høy sikkerhet.

MOF står for Management Object Format og definerer i SMS og SCCM hvilke data som skal samles inn av klientene. Management Object Format er et språk (standard) som brukes for å beskrive Common Information Model. Innsamling av data foregår ved spørringer hovedsakelig mot WMI, CLI og registry. For å ta i bruk Hardware Inventory må denne funksjonaliteten aktiveres. Uten å gjøre endringer på MOF konfigurasjonen vil SMS/SCCM gjøre innsamling av en del grunndata fra de maskiner som har klient (SMS agent) installert. Likevel har enkelte behov for innsamling av mer eller mindre data en hva som tilbys i standard konfigurasjon. Typisk vil man for eksempel i forbindelse med populering av data til en CMDB løsninger (Configuration Management Database) ha behov for utvidet innsamling av Hardware Inventory (Configuration Items (CI)), alt etter hvilke krav som foreligger for CMDB. Andre kan for eksempel ha ønske om å gjøre mindre innsamling for å spare båndbredde.

For å endre hvilke og hvor mye data som skal innsamles må man editere MOF filene. Endringer av MOF filene kan sammenlignes med å kunne sykle. Når du tror du er veldig god, gjør du noe dumt og du faller og slår deg. MOF editering er derfor av mange SCCM og SMS eksperter forbundet med frykt for å gjøre feil!

Forhåpentligvis vil denne artikkelen gi hjelp og tips til å unngå de største fallgruvene.

Hva er SMS_def.MOF og Configuration.MOF
Hvilke maskin- og programvaredata som skal innehentes av SCCM 2007 og SMS 2003 bestemmes av regler satt i MOF. SMS 2003 forholder seg kun til en SMS_def.MOF fil. I Configuration Manager 2007 er denne filen splittet og man operer der med to MOF filer, Configuration.MOF og SMS_def.MOF. Oppdelingen av MOF filene er hovedforskjellen i hvordan SMS og SCCM gjennomfører datainnsamling. Både for SMS og SCCM er MOF filene plassert i mappestrukturen <InstallDir>\inboxes\clifiles.src\hinv.

Configuration.MOF definerer de dataklasser det er behov for og som skal brukes av Hardware Inventory og WMI. Data klasser kan opprettes for eksisterende eller egendefinerte WMI spørringer eller registry nøkler på klient systemet.

SMS_def.MOF bestemmer hvilke data som skal rapporteres inn til SMS/SCCM av klienten. SMS_Def.MOF blir kompilert til en policy som kopieres ut til klientene og som igjen gjør datainnsamling og lagrer dette med WMI. Alle klasser har et ”SMS_Report flag” som kan settes til True eller False, alt ettersom man ønsker eller ikke ønsker datainnsamling for denne klassen.

SMS_def.MOF i SMS 2003 inneholder både Configuration.MOF og SMS_def.MOF slik de er beskrevet brukt i SCCM 2007.

Eksemplet som benyttes under vises hvordan SMS_def.MOF kan utvides til å innhente serienummer på harddisker på maskiner (ikke Volume SerialNumber):
[ SMS_Report     (TRUE),
SMS_Group_Name («Physical Media»),
SMS_Class_ID   («CUSTOM|PHYSICAL_MEDIA|1.0″) ]
class Win32_PhysicalMedia : SMS_Class_Template
{
[SMS_Report (TRUE)     ]        string     SerialNumber;
[SMS_Report (TRUE), key]        string     Tag;
};

For å vise en rapport over innhentet disk informasjon kan følgende SQL (SMS) spørring benyttes:
select distinct sys.netbios_name0, dsk.Model0,
Phys.Tag0, Phys.SerialNumber0 from v_gs_physical_media0 as Phys
inner join v_r_system as sys on sys.resourceid=phys.resourceid
inner join v_gs_disk as dsk on Phys.resourceid=dsk.resourceid
where
sys.netbios_name0 = @ComputerName
and dsk.deviceid0=Phys.tag0
order by Phys.tag0

Spørringen vil kunne gi følgende rapport:
Oppgradering fra SMS 2003 til SCCM 2007
Eksiterende SMS_def.MOF i SMS 2003 vil bli overskrevet ved oppgradering fra SMS 2003 til SCCM 2007. Eventuelle tilspasninger av SMS_def.MOF vil derfor bli borte. Tilpasninger som skal videreføres må tas vare på og legges inn igjen i SCCM etter fullført oppgradering.

MOF editering
Windows Management Interface (WMI)
WMI spørringer er hovedsakelig den metodikk som benyttes av Hardware Inventory for å gjøre spørringer og innhente ønsket data. Følgende lenker er gode ressurser for å finne frem i ”WMI-jungelen”:

Hardware Inventory prosessen
SMS/SCCM Advanced Clients laster ned nye Hardware Inventory regler hver gang Advanced Client policy blir oppdatert. Med standard innstillinger blir det gjort en gang i timen. Legacy Clients laster ned nye Hardware Inventory regler når klienten oppdateres. Oppdateringer skjer med standard innstillinger hver 25 time. Når klienten har de nye Hardware Inventory reglene, vil neste kjøring av Hardware Inventory innsamle maskinvaredata i henhold til MOF konfigurasjonen.

Ny MOF konfigurasjonen benyttes kun av klienten dersom alle syntakser i MOF filene er riktige. Hvis ikke blir de gamle MOF reglene brukt.

Editering av MOF filer
  • For å editere MOF filer anbefales bruk av tekst editor for eksempel Notepad.exe.
  • I miljøer med flere Primary Sites, må endringer i SMS_def.MOF og Configuration.MOF gjøres på hver Primary site (<smsServer>\inboxes\clifiles.srv\hinv).
  • I SMS 2003 må SMS_def.MOF kompileres etter modifikasjon. Dette gjøres med kommandoen mofcomp.exe SMS_DEF.MOF.
  • Det er viktig å huske på at Hardware Inventory ikke kan hente data fra HKCU (HkeyCurrentUser). Årsaken til dette er at Hardware Inventory henter informasjon fra maskinen og ikke fra brukeren.
Monitorer endringer
For å se hvilke endringer som blir gjort etter endringer i MOF filene og om endringene ga ønsket resultat eller ga feil kan følgende fremgangsmåte brukes:
  1. Bruk Trace32 (følger md SMS/SCCM Toolkit) eller annet log-fil verktøy. Se på SMSServer\logs\dataldr.log
  2. Dataldr.log vil først gi meldingen ”SMS_DEF.MOF change deteched” og senere vil den, hvis MOF endringene gikk bra, gi følgende melding ”Enf of cimv2\sms-to-policy conversion; returning 0×0”.
  3. Gå til en maskin som har SMS klienten installert. Start ”Mashine Policy Retrieval” (må ofte gjøres flere ganger). Se på loggen på maskinen med SMS klient: %windir%\system32\ccm\logs\policyevaluator.log. I denne loggen vil man i de fleste tilfeller kunne se den regelen man satte i SMS_def.MOF.  Start også ”Hardware Inventory Action” fra SMS klienten.  Etter hvert vil reglene som ble satt i SMS_def.MOF også dukke opp i log filen %wubdir%\system32\ccm\logs\inventoryagent.log.
  4. Etter litt tid vil man på SCCM serveren få nye tabeller i databasen som kan gi nye rapporteringsmuligheter for endringene som ble gjort i MOF.
Slå av uønskede rapporteringer
For å finne rapporteringsklasser som kan deaktiveres av bør man gå inn på en gruppe servere og klienter som har SMS/SCCM klient installert og se på inventoryagent.log. Se etter ”..does not exist out”. De klasser som har denne meldingen kan i de fleste tilfeller slås av. Meldingen bør i så fall være et gjennomgående tilfelle for serverne eller klientene.

En annen metode for å finne rapporteringsklasser som kan deaktiveres er å benytte Resource Explorer på klienter og servere. Hensikten er å finne data som klienten eller serveren rapporterer men som det ikke er behov for å rapportere i organisasjonen.

Dersom man finner klasser som kan være kandidater som kan deaktiveres (Disable), gjøres dette ved å endre fra TRUE til FALSE i SMS_DEF.MOF for denne klassen.

Når man har deaktivert en klasse vil det finnes gamle tabeller og ”views” i databasen som ikke lenger behøves. Det er to metoder for å rydde i databasen for ubrukte tabeller. Enten ved bruk av gratisproduktet SiteSweeper som kan lastes ned fra http://www.sccmexpert.com/ eller man kan gjøre jobben manuelt gjennom ”delgrp” som følger med SMS Toolkit.

For manuell bruk av delgrp (husk å stopp SMS Exec Service før bruk av delgrp til sletting):
  • Delgrp /L lister ut alle ”slettbare” tabeller
  • Delgrp ”MICROSOFT|TIME_ZONE|1.0” /C Denne kommandoen lister ut hvilke ”Collections” som baserer seg på ”MICROSOFT TIME ZONE”
  • Delgrp ”MICROSOFT|TIME_ZONE|1.0” sletter klassen fra databasen

Etter bruk av delgrp må ”Views” i MS SQL slettes. Dette gjøres ved å starte SQL Admin Console og velge tabellene som ønskes slettes. Slett så tabellen. Velg Drop All.
Dersom man har flere Primary Sites må prosedyren ved sletting gjennomføres på alle Primary Sites.

Slå på (aktivere) flere klasser med Asset Intelligence

Flere klasser kan aktiveres gjennom Asset Intelligence. Enkelte klasser kan kreve ekstra konfigurasjon. For eksempel vil SMS_SystemConsoleUser i tillegg kreve bruk av en GPO.

Alternativt kan man gå igjennom SMS_DEF.MOF og se etter klasser som er deaktivert (FALSE). Så må man ta avgjørelsen om disse bør aktiveres (TRUE).  Når man aktiverer en klasse er det verdt å huske på at denne klassen ofte inneholder flere attributter. Man trenger ikke alltid å sette alle attributtene til True.

Verktøyet WEBEMTEST kan liste ut avhengigheter og muligheter for en klasse.

Beste praksis for MOF utvidelser
  • Ta sikkerhetskopi av MOF filene før editering
  • Ta sikkerhetskopi av MOF før oppgradering fra SMS 2003 til SCCM 2007
  • Nye endringer i MOF filer bør legges inn nederst i filene. Da unngås risiko for at endringer vil forstyrre eksisterende regler for datainnsamling
  • Hvis mulig, legg MOF filene inn i versjonskontroll, eller husk å kommenter endringer øverst i filene. Husk også å ta med dato og navn på utførende
  • Utfør test av endringer i MOF i et utviklings eller referanseanlegg før produksjonssetting
  • For hver klasse som rapporteres inn fra klienten, krever det litt mer båndbredde og ytelse for prosessering av data. Pass derfor på å ikke starte for mye rapportering om gangen. Monitorer prosesser og nettverk samtidig
  • Klasse navnet for reporting må være det samme som klassenavnet for dataklassen
  • Klasser må kun defineres en gang
Datainnsamling og sikkerhet
Innsamling av data er sårbart for angrep. Typiske angrep kan for eksempel være:
  • å sende inn feil data
  • sende store datamengder inn til server for å gi databasen stor last
  • aksessere innsamlet data under transport til SMS/SCCM.
Med standard innstillinger i SCCM 2007/SMS 2003 blir Hardware Inventory trafikk fra klienter som benyttes i mixed mode sites ikke kryptert, men det er mulig å slå på kryptering. Kryptering kan slås på med følgende fremgangsmåte:
  1. Fra SCCM konsoll naviger til System Center Configuration Manager > Site Database > Site Management > (SiteCode)-(SiteName), høyreklikk og velg ”Properties”
  2. Velg tabben Site Mode
  3. I ”Client Settings”, slå på ”Encrypt data before sending to management Point”
SCCM 2007 Sites i native mode bruker som standard SSL for kryptering av Inventory trafikk.

Post to Twitter Post to Facebook Post to LinkedIn

Panorama Theme by Themocracy