Zapisanie numeru seryjnego komputera w Active Directory

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