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