Condividi tramite


SC Configuration Manager + Microsoft Deployment 2008: riconoscere un determinato hardware durante il deployment

Quando occorre adattare la stessa immagine ad hardware diversi, uno dei problemi da affrontare e’ quello dei driver.

Premessa: l’argomento che sto trattando e’ stato ampiamente discusso in questo post sul blog dei deployment guys, ho voluto solo portare la mia esperienza personale (e se qualcuno trova difficolta’ con l’inglese spero trovi utile questo post).

La funzionalita’ di OSD (Operating System Deployment) di SC Configuration Manager con integrato MDT (Microsoft Deployment Toolkit) 2008 fornisce un paio di “actions” per gestire i driver:

  1. Auto Apply Drivers –> viene effettuato uno “scan” della macchina e vengo aggiunti al driver store di Vista i “migliori” driver che si trovano attualmente nel Driver Store di Configuration Manager
  2. Apply Drivers Package –> vengono addiunti nel driver store di Vista sempre e comunque tutti i driver che sono presenti in un Drivers Package

Nella migliore delle ipotesi funziona sempre la prima, nella realta’ (che e’ sempre diversa dalla teoria) ci si accorge che nonostante il driver sia presente nel driver store non sempre viene aggiunto. Questo accade generalmente perche’ il tool di scan non riconosce immediatamente la periferica perche’ si tratta di una periferica “virtuale” che viene abilitata solo una volta viene installata la periferica fisica (e installato il relativo driver).

Un’altro problema lo si incontra quando determinati driver (nel mio caso e’ capitato con il lettore di impronte digirali) sono forniti dal produttore solo in un formato “EXE”; in questo modo per installare la periferica correttamente si e’ costretti a installare l’applicazione in quanto per importare il driver nello store di Configuration Manager occorre avere a disposizione il file inf (che in questo caso e’ “inglobato” nel pacchetto di installazione dell’applicazione).

Per ovviare a questi problemi (e anche per una sorta di “ordine” che mi serve per avere sotto controllo le mie build) ho scelto di utilizzare un terzo modo per installare driver (ma che puo’ servire anche ad installare applicazioni): installare un determitato pacchetto di driver (solutione #2) basandosi sul riconoscimento del modello hardware.

Infatti mettendo una condizione al task “Apply Driver Package”, questo verra’ eseguito solo se quella condizione e’ verificata. La condizione, che stiamo cercando e’ quindi legata al riconoscimento dell’hardware.

Ma come facciamo a riconoscere un determinato modello Hardware?

Nativamente il processo di deployment di Vista tramite SCCM o MDT mette a disposizione delle variabili che vanno a “leggere” nel bios alcune informazioni.

Alcune di queste variabili, per esempio, sono:

  • AssetTag
  • SerialNumber
  • Make
  • Model

Queste variabili non sono altro che il mapping di quello che si legge nel BIOS della macchina; provate a eseguire su una macchina Vista “System Information”; tra l’altro troverete questo

image

Capirete come il fatto di poter leggere, per esempio, la proprieta’ “model” permette di poter mettere una condizione abbastanza certa sul fatto che una certa azione venga eseguita solo su quel modello (assumento che a parita’ di hardware la variabile “model” sia valorizzata allo stesso modo).

Ma e’ proprio questa ultima assunzione che, nella vita reale, non e’ sempre vera.

Infatti capita spesso che un cliente che compra 100 PC identici (che funzionano tutti con la stessa immagine e gli stessi driver quindi), abbiano la variabile “model” nel bios valorizzata diversamente. Non troppo diversamente… ma per esempio (vita vissuta), nel caso di un laptop HP6910p, il valore Model sulle prime 2 macchine l’ho trovato valorizzato con:

  • HP6910P
  • HP6910P (751#abu) … o qualcosa del genere

E’ evidente che non posso basare l’applicazione della mia azione sul fatto che la variabile Model abbia un determinato valore. A questo punto posso fare pero’ una cosa che mi permette di essere piu’ flessibile.

Se sono ragionevolmente sicuro che tutti i portatili ai quali devo applicare il pacchetto di driver hanno la parola “HP6910” nella variabile “Model”, posso creare nel tab “Options” della mia action una condizione di tipo “WMI Query”.

E che cosa le faccio fare?

Le dico di andare a controllare che nella variabile model del client sia presente la parola “6910p”. Se lo trova, la consizione viene considerata vera, altrimenti falsa. Questa la sintassi:

Select * FROM Win32_ComputerSystem WHERE Model Like "%6910p%"

Il messaggio che trovo utile per questa esperienza e’ che lo strumento che abbiamo a disposizione e’ molto flessibile e permette di “adattarsi” in diversi modi alla soluzione del problema. Sta a noi poi sapere sfruttare le potenzialita’ che ci sono. Ma per questo, se non ci basta la documentazione,  ci sono i blog :-)

Ale

PS

Grazie a Colin K, Colin M e James con i quali ieri ho lavorato per risolvere questo problema.

image

Comments

  • Anonymous
    January 01, 2003
    ciao Videal no, per fare la gestione ordinaria di SCCM non e' necessario conoscere in maniera approfondita SQL. In alcuni casi potrebbe servirti ma sono ampiamente documentati dalla KB (per esempio creare query per rimuovere dal DB oggetti "orfani"). La query che vedi in realta' non e' applicata al DB di SCCM ma e' direttamente fatta al sistema operativo (in quella fase del deploy direttamente a Vista) per richiedere alcune informazioni sull'hardware sul quale sta operando utilizzando WQL (Sql for WMI), maggiori info http://msdn.microsoft.com/en-us/library/aa394606(VS.85).aspx Sulle varie tipologie di informazioni che puoi ottenere tramite una query a WMI (e per copiarne qualcuna nel caso ti servissero), di consiglio di scaricare il tool SCRIPTOMATIC 2.0 http://www.microsoft.com/downloads/details.aspx?FamilyID=09dfc342-648b-4119-b7eb-783b0f7d1178&DisplayLang=en Detto questo nel mio caso purtroppo nativamente non era prevista una query pronta nell'interfaccia per la mia esigenza quindi ho dovuto farmene una "custom", peraltro ampiamente documentata anche da esperienze di altri colleghi. Spero ti sia stato d'aiuto ale

  • Anonymous
    January 01, 2003
    Per distribuire Vista con Configuration Manager ( o con Microsoft Deployment Toolkit 2008) si usa comunque WDS (in Configuration Manager "annegato" nel ruolo di PXE Service Point). La differenza e' che per avere tutto il "contorno" fatto di script che servono ad automatizzare il deployment, devi comunque utilizzare il WinPE di Microsoft Deployment Toolkit (o di COnfiguration Manager) che e' personalizzato per fare queste cose, oltre all'engine vero e priorio di deployment che gestisce la task sequence. Quindi la risposta e' no, hai bisogno almeno WDS + MDT per fare questo.

  • Anonymous
    February 02, 2009
    Ciao, molto interessante come segnalazione. Da poco stò iniziando ad usare SCCM e non credevo di potergli associare MDT. ho notato che per definire quella condizione riguardo al modello hp 6910p, hai usato una query. La mia domanda è : l'utilizzo di SCCM comporta avere esperienza con SQL? averlo come prerequisito non credevo bisognasse anche gestire manualmente DB in SQL. Grazie Ciao

  • Anonymous
    March 28, 2009
    Ciao, questa procedura di MDT è applicabile alla distribuzione di Vista da WDS? Grazie