Script für Computernamen bei einer unattended XP-Installation

  • Hallo,

    wie der Name des Threats schon vermuten lässt geht es hier darum mit Auto-IT, nachdem Windows installiert wurde und alle Programme die man so braucht ebenso, den Rechnernamen zu ändern. Aber nicht in irgendein generiertes dingsbums sondern er soll die Namen anhand der MAC-Adresse der Netzwerkkarte aus einer Datei auslesen wo diese (wie auch immer) aufgelistet sind. Da ich unter Windows kein Microsofttool ,dass ich per batch ausführen könnte um den Namen zu ändern, gefunfen habe würde ich dann den "normalen" weg mit Auto-IT gehen. Also "System" öffnen --> Computername--> ändern und dann halt den Namen ändern durch die Daten aus einer Datei in der die Mac-Adressen mit den dazugehörigen Namen stehen.
    Was ich jetzt hierzu wissen müsste wäre:

    1. Wie lese ich die Mac-Adresse der Netzwerkkarte aus die momentan
    eine Netzwerkverbindung hat (manche Pcs haben 2 Karten)

    2. Wie vergleiche ich die MacAdresse mit denen in der Datei und wie lese ich dann aus der Datei den Namen aus.

    Wenn mit dabei jemand helfen könnte wäre ich seeeehr Dankbar.

    Zur erklärung wofür ich dieses Script brauche. Ich arbeite im Moment an einer Schule als Systemadministrator und will die unattended WinXp die ich erstellt habe "perfektionieren". Das würde den Job der Lehrer hier die normalerweise dafür zuständig sind erheblich erleichtern...

    MfG

    Akira2012

    MfG

    akira2012

    ***---____---Wer RechtSCHRAIBfehler findet der darf Sie behalLTEN!---___---***

  • Hi! lösungsvorschlag:

    Mit autoit command starten, dort ipconfig /all >> C:\mac.txt


    bei mir kommt zb raus:

    Spoiler anzeigen

    Windows-IP-Konfiguration


    Hostname. . . . . . . . . . . . . : huggy

    Primäres DNS-Suffix . . . . . . . :

    Knotentyp . . . . . . . . . . . . : Gemischt

    IP-Routing aktiviert. . . . . . . : Ja

    WINS-Proxy aktiviert. . . . . . . : Nein


    Ethernetadapter Drahtlose Netzwerkverbindung 3:


    Verbindungsspezifisches DNS-Suffix:

    Beschreibung. . . . . . . . . . . : Ralink Turbo Wireless LAN Card

    Physikalische Adresse . . . . . . : 00-0E-2E-94-9D-6E

    DHCP aktiviert. . . . . . . . . . : Ja

    Autokonfiguration aktiviert . . . : Ja

    IP-Adresse. . . . . . . . . . . . : 192.168.2.103

    Subnetzmaske. . . . . . . . . . . : 255.255.255.0

    Standardgateway . . . . . . . . . : 192.168.2.1

    DHCP-Server . . . . . . . . . . . : 192.168.2.1

    DNS-Server. . . . . . . . . . . . : 192.168.2.1

    Lease erhalten. . . . . . . . . . : Freitag, 23. Februar 2007 13:46:18

    Lease läuft ab. . . . . . . . . . : Sonntag, 25. Februar 2007 13:46:18


    Ethernetadapter LAN-Verbindung 2:


    Medienstatus. . . . . . . . . . . : Es besteht keine Verbindung

    Beschreibung. . . . . . . . . . . : Marvell Yukon 88E8053 PCI-E Gigabit Ethernet Controller

    Physikalische Adresse . . . . . . : 00-18-F3-A9-A8-08


    Ethernetadapter LAN-Verbindung 3:


    Medienstatus. . . . . . . . . . . : Es besteht keine Verbindung

    Beschreibung. . . . . . . . . . . : Marvell Yukon 88E8053 PCI-E Gigabit Ethernet Controller #2

    Physikalische Adresse . . . . . . : 00-18-F3-A9-AC-20


    Das durchsuchst du mit autoit, suchst die Zeile wo "Physikalische Adresse" steht und lässt dir die ganze zeile ausgeben.

    Dann mit StringtoRight (denke das heisst so?^^) die letzten *zähl*

    17 Zeichen ausgeben - bei mir zb

    00-0E-2E-94-9D-6E

  • Hi,

    ich bevorzuge einen DLL Call.
    So habe ich das schon bei über hundert PC`s sauber hinbekommen.


    Spoiler anzeigen
    [autoit]


    dim $MAC1 = _GetMACFromIP (@IPAddress1)

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox(0,"MACADRESS von " & @IPAddress1, $MAC1)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _GetMACFromIP ($sIP)
    Local $MAC,$MACSize
    Local $i,$s,$r,$iIP

    $MAC = DllStructCreate("byte[6]")

    [/autoit] [autoit][/autoit] [autoit]

    $MACSize = DllStructCreate("int")
    DllStructSetData($MACSize,1,6)

    [/autoit] [autoit][/autoit] [autoit]

    ;call inet_addr($sIP)
    $r = DllCall ("Ws2_32.dll", "int", "inet_addr","str", $sIP)
    $iIP = $r[0]

    [/autoit] [autoit][/autoit] [autoit]

    ;Make the DllCall
    $r = DllCall ("iphlpapi.dll", "int", "SendARP","int", $iIP,"int", 0,"ptr", DllStructGetPtr($MAC),"ptr", DllStructGetPtr($MACSize))

    [/autoit] [autoit][/autoit] [autoit]

    ;Format the MAC address into user readble format: 00:00:00:00:00:00
    $s = ""
    For $i = 0 To 5
    ;~ If $i Then $s = $s & ":"
    $s = $s & Hex(DllStructGetData($MAC,1,$i+1),2)
    Next

    [/autoit] [autoit][/autoit] [autoit]

    ;Must free the memory after it is used, after Beta 93 nicht mehr notwendig
    ;~ DllStructDelete($MAC)
    ;~ DllStructDelete($MACSize)

    [/autoit] [autoit][/autoit] [autoit]

    ;Return the user readble MAC address
    Return $s
    EndFunc

    [/autoit]

    Gruß
    Wolke

  • @ huggy : Das ganze m´ß für 180 PCs klappen. Das Erstellen einer Textdatei wo der Name und die Mac-Adresse auftauchen ist hier nicht das Problem die bekomme ich vom Server ^^. Das Problem ist es diese Auszuwerten davon habe ich keine ahnung :( Aber ich denke ich habe gerade während ich das hier schreibe deinen ansatz verstanden ^^. Aber wie liest er die Datei aus? habe ich keine Ahnung von -.-*

    wolkenloser: Da steht was von GetMacfromIP aber ist das denn richtig? oO ich meine die IP wird ja nachher erst vom Server vergeben wenn der PC-Name steht.

    Danke schonmal für eure lösungen!!

    MfG

    akira2012

    ***---____---Wer RechtSCHRAIBfehler findet der darf Sie behalLTEN!---___---***

  • keiner mehr eine Idee? ;(

    btw hab das mit dem dll-call ausprobiert funktioniert echt gut aber wie kann ich jetzt in einer .txt Datei nach dem entsprechenden Wert suchen und den PC-Namen davor auslesen? Oder kann mit einer wenigstens einen Link schicken wo ich das nachlesen kann?
    :musik2: :musik2: :musik2: :musik2:

    MfG

    akira2012

    ***---____---Wer RechtSCHRAIBfehler findet der darf Sie behalLTEN!---___---***

    Einmal editiert, zuletzt von akira2012 (27. Februar 2007 um 10:22)

  • So Ich habe jetzt in meinem Erfindungsgeist selber etwas entworfen... ^^
    Es ist nicht perfekt aber es funktioniert! Ich poste das hier mal damit andere arme unwissende die das gleiche vorhaben nicht solange dran tüfteln müssen wie ich. Ich habe hierfür das dllcall script von wolkenloser verwendet (thnx an dieser stelle ;-))

    Ich bin für verbesserungsvorschläge offen aber bitte kein "Äh wie hast du das denn gemacht das ist ja viel zu kompliziert" oder sowas. Es war immerhin "mein 1. mal" :stolz_bin:

    Spoiler anzeigen
    [autoit][/autoit] [autoit]

    [autoit]

    [/autoit][/autoit]

    MfG

    akira2012

    ***---____---Wer RechtSCHRAIBfehler findet der darf Sie behalLTEN!---___---***

    Einmal editiert, zuletzt von akira2012 (28. Februar 2007 um 11:37)

  • Ich hätte da noch einen vorschlag wie Du das hier sicherer aufrufen kannst.
    Wenn zusätzliche einträge in der Systemsteuerung vorhanden sind klappt das ggf nicht richtig.


    Du hast es so gemacht

    Spoiler anzeigen


    run("control")
    WinWaitActive("Systemsteuerung")
    send ("s")
    send ("s")
    send ("s")
    send ("s")
    send ("s")
    send ("s")
    send ("s")
    send ("{Enter}")
    WinWaitActive("Systemeigenschaften")
    send ("{RIGHT}")
    send ("!n")
    WinWaitActive("Computernamen ändern")
    send ("{CTRLDOWN}")
    send ("v")
    send ("{CTRLUP}")
    send ("{Enter}")
    sleep(2000)
    send ("{TAB}")
    send ("{Enter}")


    Ich würde das so machen:

    Spoiler anzeigen


    Run('"C:\windows\system32\rundll32.exe" C:\windows\system32\shell32.dll,Control_RunDLL "C:\windows\system32\sysdm.cpl",System,1')
    WinWaitActive("Systemeigenschaften")
    send ("!n")
    WinWaitActive("Computernamen ändern")
    Send(ClipGet())
    Send("{ENTER}")
    WinWaitActive("Computernamen ändern")
    Send("{ENTER}")


    Gruß
    Wolke

    Gruß
    Wolke

  • Ja das habe ich schon lange geändert die wundervolle welt des rundll habe ich bereits gefunden - trotzdem danke ^^

    MfG

    akira2012

    ***---____---Wer RechtSCHRAIBfehler findet der darf Sie behalLTEN!---___---***