Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Ausgelesene MAC in SMBIOS GUID Feld im AD eintragen

Mitglied: RetroDude

RetroDude (Level 1) - Jetzt verbinden

30.07.2010 um 09:19 Uhr, 8664 Aufrufe, 6 Kommentare

Hallo zusammen. Ich brauche ein Tool mit dem ich anhand eines eigegebenen PC Namens (per GUI), dessen MAC auslesen und anschliessend diese mit 20 Nullen addiert im AD auf dessen Computerobjekt im Feld SMBIOS GUID eintragen kann. Wir wollen nicht mehr die richtige GUID nehmen, weil die beim Aufsetzen der Clients via PXE WDS subnetzübergreifend irgendwie Probleme verursacht . Die Methode mit der MAC und den 20 Nullen funktioniert aber immer. Cool wäre natürlich, wenn man diesem GUI mehrere Hostnahmen angeben könnte.
Ich hab da bereits was gefunden um die MAC auszulesen. Die Addition der Nullen ist auch kein Problem. Das Problem ist aber, dass die MAC mit : als Trennzeichen ausgelesen wird... so kann ich den Wert nicht übergeben.. Dies ist bereits mein erstes Problem..


' -------------------------------------------------------------------------------------
Set fso = createobject ("scripting.filesystemobject")
Set ntwrk = createobject ("wscript.network")
strComputer = ntwrk.computername

Set objWMIService = GetObject _
("winmgmts:{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")

Set colAdapters = objWMIService.ExecQuery _
("Select * From Win32_NetworkAdapterConfiguration " _
& "Where IPEnabled = True")

For Each objAdapter in colAdapters
Client_MAC = objAdapter.MACAddress
Client_SMBIOS = Client_MAC&"00000000000000000000"
WScript.Echo Client_SMBIOS
Next
' ------------------------------------------------------------------------------------

Besten Dank im Voraus!
Gruss
Mitglied: 60730
30.07.2010 um 09:28 Uhr
Moin,

ne ganz doofe gegenfrage meinerseits..

Dein VBS läuft unter Windows und du willst die Daten, die das erzeugt dazu benutzen, das Windows erst via PXE WDS auf die Kisten zu bekommen?

Na klar - mit dem Bart oder ner anderen Version von PE ginge das, aber obs schpeedmäßig auch Sinn macht?

Und dann
For Each objAdapter in colAdapters
hmm - wenn die Ksuet aber nun Blauzahn usw. hat - greift das Vbs aber nicht wirklich.......

Gruß
Bitte warten ..
Mitglied: RetroDude
30.07.2010 um 09:45 Uhr
Hallo. Nein, ich will diese Korrektur im AD vor dem Setup mit WDS vornehmen. Das wären PCs die bereits installiert sind und per WDS neu aufgestetzt werden müssen. Durch vor Ort Supporter z.B.. Es sollte auch möglich sein die MAC von Hand anzugeben in diesem GUI. Somit wären auch Kisten abgedeckt, welche nicht abgefragt werden können. Es handelt sich um Phatclients mit 1 NIC. Kein Blauzahn und so..

Ich habe da noch mehr Code zusammen getragen:


'Auslesen der MAC Adresse:


'------------------------------------
set fso = createobject ("scripting.filesystemobject")
Set ntwrk = createobject ("wscript.network")
strComputer = ntwrk.computername

Set objWMIService = GetObject _
("winmgmts:{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")

Set colAdapters = objWMIService.ExecQuery _
("Select * From Win32_NetworkAdapterConfiguration " _
& "Where IPEnabled = True")

For Each objAdapter in colAdapters
Client_MAC = objAdapter.MACAddress
Client_SMBIOS = Client_MAC&"00000000000000000000"
Next

'--------------------------------------------
Ich versuche nun meine (Noch mit Doppelpunkten versehene..) Variable dem zweiten Codeblock zu übergeben. So sollte ich den Wechsel der GUID vornehmen können. Wie kann ich die Doppelpunkte aus der gelieferten MAC Adresse filtern?
Bitte warten ..
Mitglied: RetroDude
05.08.2010 um 15:09 Uhr
So, die Guid hab ich formatiert. ich schaffs aber noch nicht sie auf dem AD Objekt einzutragen. Hat da jemand ne Idee? Wäre froh um Input..


Set fso = createobject ("scripting.filesystemobject")
' Set ntwrk = createobject ("wscript.network")
' strComputer = ntwrk.computername

' Prombt für Computernamen

strComputer = InputBox("Computernamen eingeben","SMBIOS_GUID in AD setzen")

' Auslesen der MAC-Adresse

Set objWMIService = GetObject _
("winmgmts:{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")

Set colAdapters = objWMIService.ExecQuery _
("Select * From Win32_NetworkAdapterConfiguration " _
& "Where IPEnabled = True")

For Each objAdapter in colAdapters
Client_MAC = objAdapter.MACAddress
Next

' Herausfiltern der :

Dim MyString, MyArray, i
MyString = Client_MAC
MyArray = Split(MyString, ":", -1, 1)

For i = 0 to UBound(MyArray)
' MsgBox (MyArray(i))
Next

MAC_Neu = MyArray(0)&MyArray(1)&MyArray(2)&MyArray(3)&MyArray(4)&MyArray(5)&"00000000000000000000"

' MsgBox (MAC_Neu)


' Setzen der SMBIOS GUID im AD

DN_Client = "cn="&strComputer&",ou=Client,dc=domain,dc=domain,dc=domain"
' MsgBox (DN_Client)

UpdateNetbootGuid MAC_Neu,DN_Client


Set oComputer = DN_Client
oComputer.Put "netbootGuid"
oComputer.SetInfo

Set oComputer = Nothing
End Sub
Bitte warten ..
Mitglied: RetroDude
11.08.2010 um 15:19 Uhr
So, hab mir ne Lösung gebastelt. Auch ohne Euch!

Ich hab das Ganze noch mit Inputbox, WMI etc. etwas angepasst: (VMWare wird erkannt und nicht berücksichtigt. Einfach erweiterbar)


Option Explicit
Dim strComputerName
strComputerName = InputBox("Computernamen eingeben","SMBIOS_GUID in AD setzen")
If strComputerName = "" Then
WScript.quit
Else
Call UpdateNetbootGuid(guidGetUUID, szGetDn)
End If

Function guidGetUUID
Dim NetworkAdapterSet, NetworkAdapter, objWMI
Set objWMI = GetObject("winmgmts:\\"& strComputerName &"\root\CIMV2")
Set NetworkAdapterSet = objWMI.InstancesOf("Win32_NetworkAdapter")
For Each NetworkAdapter In NetworkAdapterSet
If NetworkAdapter.AdapterType = "Ethernet 802.3" And Not (NetworkAdapter.Description = "Packet Scheduler Miniport" _
Or NetworkAdapter.Description = "VMware Virtual Ethernet Adapter for VMnet1" _
Or NetworkAdapter.Description = "VMware Virtual Ethernet Adapter for VMnet8") Then
guidGetUUID = "00000000-0000-0000-0000-" & Replace(NetworkAdapter.MACAddress, ":", "")
End If
Next
End Function

Function szGetDN

Dim objTrans, objDomain, wshNetwork ', strComputerName

Const ADS_NAME_INITTYPE_GC = 3
Const ADS_NAME_TYPE_NT4 = 3
Const ADS_NAME_TYPE_1779 = 1

Set wshNetwork = CreateObject("WScript.Network")
Set objTrans = CreateObject("NameTranslate")
Set objDomain = getObject("LDAP://rootDse")
objTrans.Init ADS_NAME_INITTYPE_GC, ""
objTrans.Set ADS_NAME_TYPE_NT4, wshNetwork.UserDomain & "\" _
& strComputerName & "$"
szGetDN = objTrans.Get(ADS_NAME_TYPE_1779)
szGetDN = UCase(szGetDN)
End Function

Sub UpdateNetbootGuid(guidUUID, szComputerDn)
Dim oComputer

Set oComputer = GetObject("LDAP://" & szComputerDn)
If ByteArrayToGuid(oComputer.netbootGuid) <> guidUUID Then
oComputer.Put "netbootGuid", baConvertGuidToByteArray(guidUUID)
oComputer.SetInfo
End If
MsgBox(guidUUID)
Set oComputer = Nothing
Set guidUUID = Nothing
End Sub

Function ByteArrayToGuid(arrbytOctet)
If Not IsEmpty(arrbytOctet) Then
ByteArrayToGuid = _
Right("0" & Hex(AscB(MidB(arrbytOctet, 4, 1))), 2) & _
Right("0" & Hex(AscB(MidB(arrbytOctet, 3, 1))), 2) & _
Right("0" & Hex(AscB(MidB(arrbytOctet, 2, 1))), 2) & _
Right("0" & Hex(AscB(MidB(arrbytOctet, 1, 1))), 2) & _
"-" & _
Right("0" & Hex(AscB(MidB(arrbytOctet, 6, 1))), 2) & _
Right("0" & Hex(AscB(MidB(arrbytOctet, 5, 1))), 2) & _
"-" & _
Right("0" & Hex(AscB(MidB(arrbytOctet, 8, 1))), 2) & _
Right("0" & Hex(AscB(MidB(arrbytOctet, 7, 1))), 2) & _
"-" & _
Right("0" & Hex(AscB(MidB(arrbytOctet, 9, 1))), 2) & _
Right("0" & Hex(AscB(MidB(arrbytOctet, 10, 1))), 2) & _
"-" & _
Right("0" & Hex(AscB(MidB(arrbytOctet, 11, 1))), 2) & _
Right("0" & Hex(AscB(MidB(arrbytOctet, 12, 1))), 2) & _
Right("0" & Hex(AscB(MidB(arrbytOctet, 13, 1))), 2) & _
Right("0" & Hex(AscB(MidB(arrbytOctet, 14, 1))), 2) & _
Right("0" & Hex(AscB(MidB(arrbytOctet, 15, 1))), 2) & _
Right("0" & Hex(AscB(MidB(arrbytOctet, 16, 1))), 2)
End If
End Function

Function baConvertGuidToByteArray(ByVal strHexString)
Dim fso, stream, temp, ts, n, szScrubbedString
Set fso = CreateObject ("scripting.filesystemobject")
Set stream = CreateObject ("adodb.stream")
Const TemporaryFolder = 2

temp = fso.GetSpecialFolder(TemporaryFolder) & fso.gettempname ()

Set ts = fso.createtextfile (temp)

szScrubbedString = Replace(strHexString, "-", "")

ts.write Chr("&h" & Mid(szScrubbedString, 7, 2))
ts.write Chr("&h" & Mid(szScrubbedString, 5, 2))
ts.write Chr("&h" & Mid(szScrubbedString, 3, 2))
ts.write Chr("&h" & Mid(szScrubbedString, 1, 2))
ts.write Chr("&h" & Mid(szScrubbedString, 11, 2))
ts.write Chr("&h" & Mid(szScrubbedString, 9, 2))
ts.write Chr("&h" & Mid(szScrubbedString, 15, 2))
ts.write Chr("&h" & Mid(szScrubbedString, 13, 2))
ts.write Chr("&h" & Mid(szScrubbedString, 17, 2))
ts.write Chr("&h" & Mid(szScrubbedString, 19, 2))
ts.write Chr("&h" & Mid(szScrubbedString, 21, 2))
ts.write Chr("&h" & Mid(szScrubbedString, 23, 2))
ts.write Chr("&h" & Mid(szScrubbedString, 25, 2))
ts.write Chr("&h" & Mid(szScrubbedString, 27, 2))
ts.write Chr("&h" & Mid(szScrubbedString, 29, 2))
ts.write Chr("&h" & Mid(szScrubbedString, 31, 2))

ts.close

stream.type = 1
stream.open
stream.loadfromfile temp

baConvertGuidToByteArray = stream.read

stream.close
fso.deletefile temp

Set stream = Nothing
Set fso = Nothing
End Function


Gruss
Retrodude
Bitte warten ..
Mitglied: RetroDude
12.08.2010 um 09:22 Uhr
Ich habe in folgendem Coedblock ein Problem mit der Fehlerabfrage. Falls auf einem PC WMI nicht richtig funktioniert sollte das Script erneut eine Eingabemaske bringen. So kann man die MAC Adresse manuell eingeben. Wenn dieZuweisung " Set objWMI = GetObject("winmgmts:\\"& strComputerName &"\root\CIMV2")" scheitert ist kein Zugriff auf WMI möglich. Dies möchte ich abfangen. Ich habe zu Beginn des Scripts ein on error resume next reingepflastert und gehofft, dass ich mit der IsObject Prüfung dies abfangen könnte. Das funktioniert leider nicht. Habe keinen Ansatz wie ich dies abfangen könnte. Kann mir da jemand weiterhelfen? ...


Function guidGetUUID
Dim NetworkAdapterSet, NetworkAdapter, objWMI, Man_MAC
Set objWMI = GetObject("winmgmts:\\"& strComputerName &"\root\CIMV2")
If IsObject(objWMI) Then
Set NetworkAdapterSet = objWMI.InstancesOf("Win32_NetworkAdapter")
For Each NetworkAdapter In NetworkAdapterSet
If NetworkAdapter.AdapterType = "Ethernet 802.3" And Not (NetworkAdapter.Description = "Packet Scheduler Miniport" _
Or NetworkAdapter.Description = "VMware Virtual Ethernet Adapter for VMnet1" _
Or NetworkAdapter.Description = "VMware Virtual Ethernet Adapter for VMnet8") Then
guidGetUUID = "00000000-0000-0000-0000-" & Replace(NetworkAdapter.MACAddress, ":", "")
MsgBox(guidGetUUID)
End If
Next
Else
Man_MAC = InputBox("MAC kann nicht ausgelesen werden!","00:00:00:00:00:00")
guidGetUUID = "00000000-0000-0000-0000-" & Replace(Man_MAC, ":", "")
End If
End Function



Gruss
Bitte warten ..
Mitglied: RetroDude
17.08.2010 um 17:20 Uhr
Habs per DB Abfrage bzw. lokales Auslesen per Loginscript und Eintragen in SQL DB gelöst. WMI per Remote ist mir zu mühsam da fehleranfällig. Habe fertig.
Bitte warten ..
Ähnliche Inhalte
Entwicklung

OTRS 5 AD wird ausgelesen aber Anmeldung geht nicht

gelöst Frage von SchlafwvndlerEntwicklung6 Kommentare

Hallo Zusammen , Ich hab es nach langen kämpfen geschafft OTRS 5 mit LDAP anbindung aufzusetzten. Nun mein Problem. ...

Windows Server

Einfaches Tool um AD Felder zu exportieren

gelöst Frage von lordofremixesWindows Server30 Kommentare

Hallo zusammen, gibt es ein einfaches, kostenloses Tool, um alle möglichen Felder im AD (Name, Funktion, Abteilung, Niederlassung, Fax, ...

Windows Server

SQL Server Hardening Guide - Sicherheits Guide

Tipp von 116480Windows Server3 Kommentare

Server Hardening: SQL Server Installation M01 Nur die benötigten Komponenten installieren Sind nur die minimalsten benötigten Komponenten installiert, können weniger ...

Mac OS X

PDF-Formular: Auf Apple-Mac sind die Felder verschoben

gelöst Frage von ErwinMMac OS X3 Kommentare

Hallo, ich habe mit Adobe LiveCycle Designer 8.0 ein PDF-Formular erzeugt. Als Grundlage diente ein Word-Dokument, das ich als ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 1 TagWindows 105 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 1 TagAdministrator.de Feedback18 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 2 TagenHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 3 TagenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Windows Server
Standortvernetzung zu einem Strato VServer (Windows)
Frage von matzefratze81Windows Server10 Kommentare

Moin, ich komme aus einem Enterprise-Umfeld und habe den Fehler gemacht, dass ich mich auf ein kleines Unternehmen eingelassen ...

Grafikkarten & Monitore
4k EIZO Monitor, Fernseher und Splitter
Frage von LerxxeyGrafikkarten & Monitore9 Kommentare

Hallo Zusammen, vielleicht könnt ihr mir bei einem Problem helfen wo ich einfach nicht mehr weiterkomme Und zwar haben ...

TK-Netze & Geräte
Fax im Betrieb
Frage von gansa28TK-Netze & Geräte6 Kommentare

Hallo zusammen, Endlich wurden meine Gebete Erhört und der Rechner meines Bekannten dem ich etwas unter die Arme greife, ...

Humor (lol)
Nerd Zeitschrift gesucht
Frage von 2SeitenHumor (lol)6 Kommentare

Hey Zusammen, Ich suche eine Zeitschrift bei der es ums technische Basteln geht. Pc zusammenschrauben, Arduino Projekte, Server Tipps ...