flibbi 10 Geschrieben 26. Juni 2007 Melden Teilen Geschrieben 26. Juni 2007 Guten Morgen, ich beschäftige mich seit einigen Wochen intensiv mit den Remote Installationsdiensten von Windows, was nach anfänglichen Schwierigkeiten mit dem Einbinden von Raidkarten Treibern nun aber soweit ganz gut läuft. Nun hänge ich jedoch an einem Punkt. das Szenario: Linux DHCP Server in einem Netzwerk mit /24 Netz. Freigabe der Hosts per MAC Adresse und DNS (Linux DHCP "group" erstellt, in den ich dann die Windows packe, die ich installieren möchte). Der RIS Server selbst hat kein DHCP Server aktiviert. Die Installation verläuft soweit wie ich will, es wird ein Standard Server 2003 64 Bit installiert, angepasst auf die verwendete Hardware sowie Firma (Treiber, OEM Logo) sowie einige Updates zur Ursprungsversion (R2, SP2). Nun kann ich leider den Hostnamen + IP nicht so setzen wie ich es möchte, daher hab ich ein kleines Script gebaut. Anscheinend setzt RIS das Netzwerk immer auf "standardeinstellung", d.h. DHCP. Das ist zwar für die Installation ok, jedoch soll das System nach Fertigstellung eine feste IP haben und den DNS Hostnamen (server-xyz.domain.com) Hier mein Script, das via cmdlines.txt ausgeführt wird (sicherlich etwas umständlich, ich weiß derzeit leider nicht, wie ich anders vorgehen könnte, Tipps willkommen :) ): ::@echo off :: IP auslesen FOR /F "TOKENS=2* DELIMS=:" %%A IN ('IPCONFIG /ALL ^| FIND "IP Address"') DO FOR %%B IN (%%A) DO SET IPADDR=%%B ::echo %IPADDR% :: Hostname auslesen FOR /F "TOKENS=2* DELIMS=:" %%C IN ('nslookup %IPADDR% 89.1xx.1xx.1xx ^| FIND "Name"') DO FOR %%D IN (%%C) DO SET HOSTNAME=%%D ::echo %HOSTNAME% ::IP ändern netsh interface ip set address name="Local Area Connection" static %IPADDR% 255.255.255.0 89.1xx.1xx.1xx 1 netsh interface ip add dns name="Local Area Connection" addr=89.13x.1xx.1xx netsh interface ip add dns name="Local Area Connection" addr=89.14x.1xx.1xx :: Hostname ändern ::REG add "HKLM\SYSTEM\ControlSet001\Control\ComputerName\ComputerName" /v ComputerName /t REG_SZ /d %HOSTNAME% /f ::REG add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v "NV Hostname" /t REG_SZ /d %HOSTNAME% /f ::REG add "HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName" /v ComputerName /t REG_SZ /d %HOSTNAME% /f ::REG add "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v "NV Hostname" /t REG_SZ /d %HOSTNAME% /f :: FERTSCH Was macht das Script? 1. IP auslesen, die ich aktuell per DHCP erhalten habe 2. Hostnamen auslesen, und zwar per nslookup aus dem Host, auf dem die deligierende Zone des Hostnamens liegt (sehr umständlich, wie ich finde, weiß leider nicht, wo ich den Hostnamen sonst "her holen" soll). 3. IP ändern 4. Hostname ändern (derzeit auskommentiert) Die IP Änderung funktioniert soweit. Lasse ich jedoch mit den obigen Zeilen den Hostnamen ändern, erhalte ich zwar ein "Command completed successfully" der Windows Kommandozeile, allerdings kommt nach einem Reboot des Systems lediglich der windows Bildschirm und eine Fehlermeldung a la "Fehler in lsass.exe". Diese kann ich zwar mit ok bestätigen, allerdings rebootet der frisch installierte Server dann direkt. Habt ihr vielleicht irgendwelche Tipps, wie ich das Setzen von IP und Host einfacher gestalten kann? Wie gesagt, beide Infos sind per DNS abrufbar, ich weiß nur nicht wie ich diese in RIS integrieren kann. :( Anmerkung: Ich komme aus dem Linux Umfeld und administriere Windows Server erst seit ein paar Monaten, daher ist mir die Bash (derzeit) wesentlich geläufiger wie die Batch Programmierung unter Windows. Für Tipps wäre ich dankbar. Gruß, flibbi Zitieren Link zu diesem Kommentar
grizzly999 11 Geschrieben 26. Juni 2007 Melden Teilen Geschrieben 26. Juni 2007 Wieso den Computernamen so setzen? Ich mach das bei RIS über einen "verwalteten" Computer. ich lege also das Computerkonto im AD vorher an, setze dabei das Häkchen "Verwalteter Computer" und trage dann die GUID des Computers ein. Entweder hat das BIOS eine GUID oder sie wird aus 20x Nullen plus der MAC der NIC gebildet. Die GUID, die der Rechner liefert, wird beim PXE Start angezeigt. grizzly999 Zitieren Link zu diesem Kommentar
flibbi 10 Geschrieben 26. Juni 2007 Autor Melden Teilen Geschrieben 26. Juni 2007 Hallo, nun, der Computer muss in jedem Falle einen oben genannten Namen erhalten, da er im Internet hierüber eindeutig identifizierbar und erreichbar ist. Den Namen per Active Directory zu setzen, da kam ich noch nicht drauf, weil der zu installierende Rechner kein Domänen PC wird, sondern einer Workgroup angehört (jeder PC ist eigentlich als eigener zu bezeichnen - dediziert). Macht es da Sinn das ganze via Active Directory zu setzen? Bevor ich dort einen neuen Rechner eingetragen habe, habe ich nach der Installation auch den Hostnamen im System selbst geändert - oder irre ich da? Gruß, flibbi Zitieren Link zu diesem Kommentar
grizzly999 11 Geschrieben 26. Juni 2007 Melden Teilen Geschrieben 26. Juni 2007 Dass der Computer nachher einer Workgroup angehört, sollte eigentlich keine Rolle spielen, einfach das Domain Joinen in der Antwortdatei unterbinden, bzw eine Arbeitsgruppe angeben. grizzly999 Zitieren Link zu diesem Kommentar
flibbi 10 Geschrieben 27. Juni 2007 Autor Melden Teilen Geschrieben 27. Juni 2007 Also ich hab das nun mal probiert, das klappt zwar, ist jedoch relativ umständlich, da jeder Computer vorher eingetragen werden muss. Kann ich nicht irgendwie Scriptbasiert den Hostnamen abändern? Zitieren Link zu diesem Kommentar
itomix 10 Geschrieben 30. Juni 2007 Melden Teilen Geschrieben 30. Juni 2007 Hi flibbi, für das auslesen der des Hostname und der IP -Addresse habe ich Dir mal ein kleines Beispiel geskriptet ;o) *grins* Viel Spaß damit Tom ReadHostandIP.vbs On Error Resume Next Const wbemFlagReturnImmediately = &h10 Const wbemFlagForwardOnly = &h20 strComputer ="." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") Function HostN() Dim a Set colPC = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly) For Each objItem In colPC a = objItem.Name Next HostN=a End function Set objfs = CreateObject("Scripting.FileSystemObject") Set objstream = objfs.CreateTextFile(HostN+".TXT") For Each objItem In colPC objstream.WriteLine "_____________________________________________" objstream.WriteLine " " objstream.WriteLine " Computer: " & HostN objstream.WriteLine "_____________________________________________" Next For Each strComputer In arrComputers Set colAdapters = objWMIService.ExecQuery _ ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True") n = 1 objstream.WriteLine For Each objAdapter in colAdapters objstream.WriteLine "Network Adapter " & n objstream.WriteLine "-----------------" objstream.WriteLine objstream.WriteLine "Description : " & objAdapter.Description objstream.WriteLine 'objstream.WriteLine "Host name : " & objAdapter.DNSHostName If Not IsNull(objAdapter.IPAddress) Then For i = 0 To UBound(objAdapter.IPAddress) objstream.WriteLine "IP address : " & objAdapter.IPAddress(i) Next End If If Not IsNull(objAdapter.IPSubnet) Then For i = 0 To UBound(objAdapter.IPSubnet) objstream.WriteLine "Subnet : " & objAdapter.IPSubnet(i) Next End If If Not IsNull(objAdapter.DefaultIPGateway) Then For i = 0 To UBound(objAdapter.DefaultIPGateway) objstream.WriteLine "Default gateway : " & _ objAdapter.DefaultIPGateway(i) Next End If 'objstream.WriteLine "DNS Servers : " If Not IsNull(objAdapter.DNSServerSearchOrder) Then For i = 0 To UBound(objAdapter.DNSServerSearchOrder) objstream.WriteLine "DNS Servers : " & objAdapter.DNSServerSearchOrder(i) Next End If objstream.WriteLine "DNS domain : " & objAdapter.DNSDomain If Not IsNull(objAdapter.DNSDomainSuffixSearchOrder) Then For i = 0 To UBound(objAdapter.DNSDomainSuffixSearchOrder) objstream.WriteLine "DNS suffix search list : " & _ objAdapter.DNSDomainSuffixSearchOrder(i) Next End If objstream.WriteLine "MAC Address : " & objAdapter.MACAddress objstream.WriteLine IF objAdapter.DHCPEnabled = "Falsch" Then objstream.WriteLine "DHCP enabled : No" ELSE objstream.WriteLine "DHCP enabled : Yes" End If 'objstream.WriteLine "DHCP enabled : " & objAdapter.DHCPEnabled objstream.WriteLine "DHCP server : " & objAdapter.DHCPServer If Not IsNull(objAdapter.DHCPLeaseObtained) Then utcLeaseObtained = objAdapter.DHCPLeaseObtained strLeaseObtained = WMIDateStringToDate(utcLeaseObtained) Else strLeaseObtained = "" End If objstream.WriteLine "DHCP lease obtained : " & strLeaseObtained If Not IsNull(objAdapter.DHCPLeaseExpires) Then utcLeaseExpires = objAdapter.DHCPLeaseExpires strLeaseExpires = WMIDateStringToDate(utcLeaseExpires) Else strLeaseExpires = "" End If objstream.WriteLine "DHCP lease expires : " & strLeaseExpires objstream.WriteLine "Primary WINS server : " & objAdapter.WINSPrimaryServer objstream.WriteLine "Secondary WINS server : " & objAdapter.WINSSecondaryServer n = n + 1 Next Next objstream.close Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.