Posiadając odczytany numer seryjny komputera z poprzedniego artykułu możemy go zapisać w Active Directory. Jest tam przewidziane do tego celu pole serialnumber jak atrybut obiektu komputer.
Przyjmujemy założenie że skrypt wpisujący do AD będzie się wykonywał na komputerze z którego odczytaliśmy numer seryjny dlatego też pierwszą rzeczą którą wykonamy jest powołanie obiektu oNet pozwalającego ustalić nazwę komputera na którym odpaliliśmy skrypt z właściwości oNet.ComputerName.
Set oNet = CreateObject("WScript.Network")
Po czym wykonujemy połączenie do naszej domeny w celu wyszukania czy jest w niej nasz komputer i jaki jest jego DN (W LDAP://DC= wpisz nazwę FQDN swojej domeny)
Set aCon = CreateObject("ADODB.Connection") Set aCmd = CreateObject("ADODB.Command") aCon.Provider = "ADsDSOObject" aCon.Open aCmd.ActiveConnection = aCon aCmd.CommandText = "<LDAP://DC=domena,DC=local>;(&(objectClass=computer)(CN="&oNet.ComputerName&"));distinguishedName;subTree" Set aRst = aCmd.Execute() If Err.Number <> 0 Then Wscript.echo "AD_Serial Blad Ldap Query " & Hex(err.number), err.description, Err.Source WScript.Quit(2) End If DN= aRst.fields ("distinguishedName").value aRst.MoveNext
Posiadając DN czyli unikalną nazwę obiektu w AD wraz ze ścieżką do niego możemy podłączyć się do niego w celu edycji.
Set oOU = GetObject ("LDAP://" & DN) If Err.Number <> 0 Then Wscript.echo "AD_Serial Blad Get Ldap DN " & Hex(err.number), err.description, Wscript.quit(3) Exit Function End If
Możemy teraz sprawdzić co mamy obecnie zapisane w atrybucie serialnumber
WScript.Echo oOU.Get("serialnumber")
Lub przystąpić do jego zapisania upewniwszy się, że nie jest już zapisany. Pod zmienną sSerial musimy mieć już zapamiętany nasz uprzednio odczytany numer seryjny
If oOU.Get("serialnumber") <> sSerial Then oOU.put"serialnumber",sSerial If Err.Number <> 0 Then Wscript.echo "AD_Serial Blad Put Serial Number " & Hex(err.number), err.description, Err.Source End If oOU.SetInfo If Err.Number <> 0 Then Wscript.echo "AD_Serial Blad Set Info " & Hex(err.number), err.description, Err.Source End If End If