Tips Bilde:
Du kan finne mer informasjon om automat LTI distribusjon i Windows 7 Resource Kit fra Microsoft Press. Jeg er hovedforfatter for denne Resource Kit og jeg også opprettholde Unofficial brukerstøtte for Windows 7 Resource Kit hvor du finner de siste oppdateringene og annen nyttig informasjon.
I del 16 i denne serien du har lært hvordan du bruker MDT database for å tilpasse utrulling av Windows 7 basert på UUID av hver målmaskin. I den artikkelen også lært deg hvordan du bruker WMI til å bestemme UUID av en datamaskin hvis dette UUID ikke vises i systemets BIOS eller tilhørende dokumentasjon. Metoden vi pleide å gjøre dette men var litt rotete, pluss datamaskinen hvis UUID du ønsker å finne ut må allerede ha hatt en Windows-operativsystemet er installert på den.
Dette bringer opp et spørsmål: Kan du bruke WMI til å bestemme UUID av en datamaskin hvis det ikke er noe operativsystem installert på det? Svaret er ja. For å gjøre dette, må vi først rydde opp i scripting ting vi gjorde i de to siste artiklene. Da må vi bygge en tilpasset Windows forhåndsinstallasjonsmiljø (WinPE) bilde, legge til skript til dette bildet, og brenne image til CD media. Du kan deretter bruke denne CD for å starte opp en bare-metal datamaskin til WinPE og kjøre skript for å bestemme systemets UUID.
Og det er hva denne artikkel og den neste er om. Først i denne artikkelen vil vi lage et rent lite skript som vil vise datamaskinens UUID uten å fikle rundt. Så i den neste artikkelen skal vi lære å lage et tilpasset WinPE "verktøy" CD du kan bruke til å kjøre skript på en bare-metal system som har noe operativsystem installert for å kunne fastslå systemets UUID. Når du har brukt din WinPE CD for å kjøre skript på en rekke mål datamaskiner, kan du skrive inn disse UUID inn i MDT database og distribuere tilpassede Windows bilder til hver datamaskin som ønsket.
Tips:
Hvis du er ny til WMI scripting, sjekk ut min 14-del innledende serie artikler om WindowsNetworking.com tittelen Administrere Windows-nettverk ved hjelp av skript.
Script fastslår UUID av en datamaskin
I del 16 av denne serien så vi hvordan vi kunne bestemme UUID av en datamaskin ved hjelp av WMI som følger:
- Vi begynte med DisplayClassProperties.vbs
script fra del 13 av min tidligere serie av skript artikler som viser navnene på alle egenskapene til en WMI klasse sammen med verdiene av disse egenskapene.- Neste vi kjørte WBEMTEST på datamaskinen for å finne ut hvordan vi må tilpasse strWMIQuery = < streng >
linje av skriptet slik at skriptet vil fungere på den aktuelle datamaskinen. Den faktiske fremgangsmåten for å gjøre dette er: (a) kjøre WBEMTEST (b) koble til root \\ cimv2 navnerom (c) klikk ENUM forekomster (d) type Win32_ComputerSystemProduct (e) trykk OK. Den resulterende utgang fra WBEMTEST blir så brukt som verdien av < string > i ovennevnte linje av skriptet. Og dette må gjøres manuelt som WBEMTEST utgang støtter ikke kopiere til utklippstavlen!- Så når manuset ble tilpasset, vi kjørte den på datamaskinen, og inngår som en del av manuset utgang var datamaskinens UUID.
Dette var alle litt rotete selvfølgelig-vi ville heller ikke å løpe WBEMTEST på datamaskinen eller må tilpasse manuset hver gang vi har å kjøre den. Og vi vil heller bare få manuset til utgang datamaskinens UUID og ikke en haug med andre ting også.
Her er hvordan vi kan gjøre dette. Vi begynner med den modifiserte DisplayClassProperties.vbs
script tatt fra Part 16 i denne serien:
'DisplayClassProperties.vbs
' Brukes til å finne den UUID av en spesifikk stasjonær datamaskin
'By Mitch Tulloch (www.mtit.com)
Option Explicit
On Error Resume Next
Dim strComputer
Dim strWMINamespace
Dim strWMIQuery
Dim objWMIService
Dim colItems
Dim objItem
strComputer =
strWMINamespace = "\\ root \\ CIMV2"
strWMIQuery = "". ": Win32_ComputerSystemProduct.IdentifyingNumber = 'MXG5380254 NA540', Name = 'PY196AV-ABA a1130e ', versjon =' 0n31211CT101AMBEM00 '"
Set objWMIService = GetObject (" winmgmts: \\\\ "& strComputer & strWMINamespace & strWMIQuery)
WScript.Echo" Antall egenskapene til "& strWMIQuery & "Klassen er" & objWMIService.Properties_.count
For Hver objItem i objWMIService.Properties_
Wscript.Echo "Property:" & objItem.name & vbTab & "Value:" & objItem.value
Neste
Nå, for å oppnå det WBEMTEST gjør og returnere forekomster av Win32_ComputerSystemProduct klasse, må vi bruke SWbemServices.InstancesOf metoden SWbemServices objekt. For å finne ut hvordan du gjør dette, jeg bare tilpasset følgende skript fra en side av den gode gamle Windows 2000 Scripting Guide plakater (se her):
strComputer = "."
Set objSWbemServices = GetObject ("winmgmts: \\\\" & strComputer & "\\ root \\ cimv2")
Set colSWbemObjectSet = objSWbemServices.ExecQuery _
("SELECT * FROM Win32_Service")
For hver objSWbemObject I colSWbemObjectSet
Wscript.Echo "Navn:" & objSWbemObject.Name
Neste
Min tilpasset versjon av skriptet ovenfor ser slik ut: "."
strComputer =
Set objSWbemServices = GetObject (" winmgmts: \\\\ "& strComputer &" \\ root \\ cimv2 ")
Set colSWbemObjectSet = objSWbemServices.ExecQuery _
(" SELECT * FROM Win32_ComputerSystemProduct ")
For Hver objSWbemObject I colSWbemObjectSet
strIdentifyingNumber = objSWbemObject.IdentifyingNumber
strName = objSWbemObject.Name
strVersion = objSWbemObject.Version
Neste
Wscript.Echo "IdentifyingNumber:" & strIdentifyingNumber
Wscript.Echo "Navn:" & strName
Wscript.Echo "Version:" & strVersion
Grunnen til at jeg trenger skriptet ovenfor for å bestemme verdiene av de tre egenskapene IdentifyingNumber, navn og versjon er fordi Win32_ComputerSystemProduct klasse har tre viktige egenskaper, nemlig (du gjettet det) IdentifyingNumber, navn og Versjon. For å se dette, se dokumentasjonssiden for denne klassen på MSDN. Husk at en nøkkel eiendom er en egenskap som gir en unik identifikator for en forekomst av en klasse, og for å koble til en forekomst av en klasse, må du angi en bestemt forekomst ved hjelp av nøkkelen tilhører klassen. Viktige egenskaper er merket med "Key" qualifier i MSDN dokumentasjon-henvise tilbake til del 13 av min tidligere serie scripting artikler for mer informasjon om viktige egenskaper.
Nå må jeg rett og slett å slå sammen de ovennevnte tilpasset manuset med mine tidligere DisplayClassProperties.vbs
script for å opprette følgende nytt manus som jeg har kalt UUID.vbs
(merk at jeg har forenklet dette skriptet ved å utelate variable definisjoner og feilhåndtering):
'UUID.vbs
' Viser UUID av en datamaskin
'By Mitch Tulloch ( «.» www.mtit.com)
strComputer =
strWMINamespace = "\\ root \\ CIMV2"
Set objSWbemServices = GetObject ("winmgmts: \\\\" & strComputer & "\\ root \\ cimv2" )
Set colSWbemObjectSet = objSWbemServices.ExecQuery ("SELECT * FROM Win32_ComputerSystemProduct")
For Hver objSWbemObject I colSWbemObjectSet
strIdentifyingNumber = objSWbemObject.IdentifyingNumber
strName = objSWbemObject.Name
strVersion = objSWbemObject.Version
Neste
strWMIQuery = ": Win32_ComputerSystemProduct.IdentifyingNumber = '" & strIdentifyingNumber _
& "', Name ='" & strName & "', Version ='" & strVersion & chr (39)
Set objWMIService = GetObject ("winmgmts: \\\\" & strComputer & strWMINamespace & strWMIQuery)
For Hver objItem i objWMIService.Properties_
Hvis objItem.name = "UUID" Så
Wscript.Echo objItem.name & "=" &Amp; objItem.value
End If
Neste
Legg merke til at den vanskelige delen her er å sørge for at sitatene er korrekte i strWMIQuery = < streng >
uttalelse. For eksempel, avslutter setningen med & chr (39), som tilføyer enkelt sitat som trengs for å skikkelig fullsyntaksen til setningen. Det tok litt fikling for å få dette til å fungere-triks som hjalp meg var å midlertidig sette en Wscript.echo strWmiQuery
uttalelse umiddelbart etter strWMIQuery = < streng >
uttalelse slik at jeg kunne kjøre skriptet og utgang innholdet i strengen for å se om strengen hadde riktig syntaks, og deretter gjøre en endring, og kjøre script på nytt, og så videre før jeg fikk syntaksen riktig.
Testing av Script
La oss nå se om skriptet fungerer ved å kjøre det fra kommandolinjen på en datamaskin som har Windows XP installert på den (figur 1):
Figur 1:
Kjører UUID.vbs på en datamaskin som har et operativsystem
La oss gjøre vår script enda enklere å kjøre ved å opprette en medfølgende batch fil som heter UUID.bat Hotell som lyder som følger:
ECHO OFF
cscript.exe //nologo UUID.vbs
Dette gjør det enklere å kjøre manuset og gjør også produksjonen renere (figur 2):
Figur 2:
Kjører UUID.bat på en datamaskin som har et operativsystem
Konklusjon
Nå som vår script er klar, må vi bygge et WinPE image og inkludere våre skript i dette bildet, slik at vi kan drive vår skript på bare-metall systemer. Du vil lære hvordan du gjør dette i neste artikkel i denne serien.
Next Page:Windows 7 Compatibility Testing (del 1) - Neste vi kjørte WBEMTEST på datamaskinen for å finne ut hvordan vi må tilpasse strWMIQuery = < streng >