Benutzer mit den meisten Antworten
Umgebungsvariable | WDS Deployment mit WAIK / AutoUnattend.xml

Frage
-
Hallo,
Ich möchte in der Unattend.xml die vom WDS für das Deployment für Windows 7 genutzt wird, ein Script ausführen was aus dem Bios das AssetTag ausliest und in einer Variable zwischenspeichern, die ich dann später benutzen kann um den Computernamen zu setzen.
Das Script soll hier laufen:
4. specialize | x86_Microsoft-Windows-Deployment_neutral | RunSyncronousCommand
und eine variable definieren / befüllen die ich dann in
4. specialize | x86_Microsoft-Windows-Shell-Setup_neutral | ComputerName
eintragen kann.
Um das AssetTag auszulesen habe ich bereits ein vbs Script geschrieben, das Problem ist jetzt wie ich den String der zurückgeben in das Feld bekomme wo der Computername steht.
Wie genau geht das? Ich konnte bei google Bing nichts sinnvolles finden.
Gruß Joel
Edit:
Falls jemand mal ein Script benötigt was das AssetTag aus dem Bios ausliest:strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colBIOS = objWMIService.ExecQuery _ ("Select * from Win32_SystemEnclosure") For each objBIOS in colBIOS wscript.echo objBIOS.SMBIOSAssetTag Next
- Typ geändert Raul TalmaciuMicrosoft contingent staff Mittwoch, 27. Juli 2011 10:35 Warten auf Feedback
- Typ geändert Joel Buttlar Mittwoch, 27. Juli 2011 12:46 still a question
Antworten
-
Windows-Setup startet immer aus einem WinPE heraus. Dort wird diestartnet.cmd im System32 aufgerufen, die dann ihrerseits dafürverantwortlich ist, setup.exe (mit entsprechenden Parametern) zu starten.Mit den Tools aus dem WAIK kann man dieses WinPE anpassen - geändertestartnet.cmd machen und einbinden, die sich zunächst ein generischesunattend.xml holt, dort den Computernamen austauscht und diesesunattend.xml dann für setup.exe als Antwortdatei verwendet. Sieht hierfür ne Testumgebung so aus - gleich noch um das Asset-Tag ergänzt :)(und ist ein tiefer Griff in die Batch-Kiste...)setlocal enabledelayedexpansionfor /f "skip=1" %%b in ('wmic path win32_systemenclosure get smbiosassettag') do (if !unattendname!.==. set unattendname=%%b)Set RspOld=%Sourcepath%\unattend.modSet RspIn=%Temp%\unattend.xmlSet RspOut=%temp%\unattend.modDel %Temp%\* /qCopy %RspOld% %RspIn% >nul 2>&1for /f "tokens=*" %%l in (%RspIn%) Do (If /i "%%l" neq "<Computername />" echo %%l>>%RspOut%If /i "%%l" equ "<Computername />" echo Computername wird ersetzt.If /i "%%l" equ "<Computername />" echo ^<Computername^>%Unattendname%^</Computername^>>>%RspOut%)Del %RspIn% >nul 2>&1Copy %RspOut% %RspIn% >nul 2>&1Del %RspOut% >nul 2>&1%Sourcepath%\Win7x86\sources\setup.exe /unattend:%RspIn%mfg Martin
A bissle "Experience", a bissle GMV...- Bearbeitet Martin Binder Donnerstag, 28. Juli 2011 09:46 Zeilenumbrüche korrigiert...
- Als Antwort markiert Joel Buttlar Freitag, 29. Juli 2011 22:22
Alle Antworten
-
So wird eine Umgebungsvariable draus:> strComputer ="."> Set objWMIService = GetObject("winmgmts:" _set objShell = CreateObject( "WScript.Shell" )> & "{impersonationLevel=impersonate}!\\" & strComputer& "\root\cimv2")> Set colBIOS = objWMIService.ExecQuery _> ("Select * from Win32_SystemEnclosure")> For each objBIOS in colBIOS> wscript.echo objBIOS.SMBIOSAssetTagobjShell.Run "setx BIOSASSET " & objBIOS.SMBiosAssetTag & " /M"> NextUnd wenn Du den Computer umbenennen willst: Win32_Computersystem.RenameFor each objBIOS in objWMIService.InstancesOf( "Win32_SytemEnclosure" )NewComputerName = objBIOS.SMBIOSAssetTagNextFor Each objComputer in _objWMIService.InstancesOf( "Win32_Computersystem" )objComputer.Rename NewComputernameNext'Reboot...mfg MartinDisclaimer: Ungetestet und ohne Gewähr auf Richtigkeit (:
A bissle "Experience", a bissle GMV... -
Das ganze muss ja während der Unattend WDS Installation von Windows 7 bzw. vor dem automatisierten Domainjoin ablaufen.
Ich habe ein Script geschrieben was den Namen des Computers in eine Umgebungsvariable mit dem Name MachineName schreibt.
Ich nehme mal an das Microsoft auch nur mit Wasser kocht und während des Setups mittels WDS Umgebungsvariablen benutzt wenn das der Fall ist könnte das so gehen. Ich werde das ganze jetzt testen und melde mich dann später nochmal.
-
Es funktioniert leider nicht!
Das erste was in der Phase 4. specialize ausgeführt wird ist der Domain Join.
Damit habe ich also keine Möglichkeit durch Scripte während der Installation den Computernamen mit dem in die Domain gejoint wird zu beeinflussen.
gibt es eine Möglichkeit einen Rechner lokal und in der Domain umzubenennen?
Vielen Dank für eure Hilfe!
-
- Als Antwort markiert Joel Buttlar Mittwoch, 27. Juli 2011 14:06
- Tag als Antwort aufgehoben Joel Buttlar Mittwoch, 27. Juli 2011 14:06
-
Es gibt ja nur eine zentrale xml datei auf dem WDS Server. Ich sehe keine Möglichkeit diese dynamisch zu ändern.
Wenn ein Client noch nicht mit einer GUID in AD eingetragen ist behandelt der WDS Server diesen Client als unknown und joint ihn mit der MAC Adresse als Rechnernamen in die AD ein. In der unattend.xml ist dazu bei Computername die variable %MachineName% gesetzt die vom WDS dann überschrieben wird. Wenn der Client schon mit GUID in der Domaine ist nimmt der WDS den dort angegeben Rechnernamen und schiebt ihn auch automatisch in die entsprechende OU in die der Client bereits eingetragen war.
Ich habe jetzt also folgende Möglichkeiten:
1. Ich kann den Client vom WDS in die Domain joinen lassen und dann nachträglich irgendwie lokal und in der AD umbenennen. Dieser Schritt wäre nur bei der ersten Installation nötig da die Clients anschließend mit einer GUID in der AD eingetragen sind.
2. Die Clients vorher mit GUID in der AD eintragen "prestaging" oder bei bestehenden Clients nachträglich die GUID per Script in die AD eintragen.
3. Die Clients nicht vom WDS joinen lassen sondern das hinterher mittels firstLogonScript zu realisieren. Dann wäre ich auch in der Lage den Rechnernamen vorher zu ändern und korrekt zu joinen. Allerdings weiß ich nicht ob hierbei die GUID in die Domaine eingetragen wird. Falls nicht müsste man bei jeder Neuinstallation den Client in die entsprechende OU verschieben
Welche der Möglichkeiten klingt für euch am besten?
Mir gefällt Möglichkeit 2 aktuell am besten allerdings habe ich noch keine Ahnung wie ich das bewerkstelligen soll.
-
Windows-Setup startet immer aus einem WinPE heraus. Dort wird diestartnet.cmd im System32 aufgerufen, die dann ihrerseits dafürverantwortlich ist, setup.exe (mit entsprechenden Parametern) zu starten.Mit den Tools aus dem WAIK kann man dieses WinPE anpassen - geändertestartnet.cmd machen und einbinden, die sich zunächst ein generischesunattend.xml holt, dort den Computernamen austauscht und diesesunattend.xml dann für setup.exe als Antwortdatei verwendet. Sieht hierfür ne Testumgebung so aus - gleich noch um das Asset-Tag ergänzt :)(und ist ein tiefer Griff in die Batch-Kiste...)setlocal enabledelayedexpansionfor /f "skip=1" %%b in ('wmic path win32_systemenclosure get smbiosassettag') do (if !unattendname!.==. set unattendname=%%b)Set RspOld=%Sourcepath%\unattend.modSet RspIn=%Temp%\unattend.xmlSet RspOut=%temp%\unattend.modDel %Temp%\* /qCopy %RspOld% %RspIn% >nul 2>&1for /f "tokens=*" %%l in (%RspIn%) Do (If /i "%%l" neq "<Computername />" echo %%l>>%RspOut%If /i "%%l" equ "<Computername />" echo Computername wird ersetzt.If /i "%%l" equ "<Computername />" echo ^<Computername^>%Unattendname%^</Computername^>>>%RspOut%)Del %RspIn% >nul 2>&1Copy %RspOut% %RspIn% >nul 2>&1Del %RspOut% >nul 2>&1%Sourcepath%\Win7x86\sources\setup.exe /unattend:%RspIn%mfg Martin
A bissle "Experience", a bissle GMV...- Bearbeitet Martin Binder Donnerstag, 28. Juli 2011 09:46 Zeilenumbrüche korrigiert...
- Als Antwort markiert Joel Buttlar Freitag, 29. Juli 2011 22:22