proste zadanko dla skrypciazy – jak zmienic fullname czyli ‘cn’ obiektu AD? metoda:

set oUser=getObject(ADsPath)
oUser.cn="nazwisko imie"
oUser.setInfo

zwroci blad – wartosc RDN nie moze byc modyfikowana. w skrocie – RDN czyli Relative Distinguished Name – jest wartoscia wyliczana, wiec nie mozna jej modyfikowac. szczegolowy opis mozna znalezc na stronach script center.
na tej podstawie wersja pozwalajaca na szybka modyfikacje wszystkich userow w calej galezi OU:

'*******************************************************************************
'* skrypt robi pozadek w nazwach 'fullname' czyli w cn uzytkwnikow *
'* warunek: user musi miec prawidlowo wypelnone pola imie i nazwisko *
'* parametr wywolania: relatywna nazwa jednosktki org. od ktorej ma sie rozpo-*
'* czac wyszukiwanie uzytkownikow do zmiany *
'* Przygotowane przez: ISCG sp z o.o. *
'* autor: nexor@iscg.pl *
'* last change 15.v.2oo7 *
'* *
'*******************************************************************************

'OPTION EXPLICIT
ON ERROR RESUME NEXT
Dim adoConnection, adoCmd, adoRecordSet
dim t, oDom, domDNS
dim record

if wscript.arguments.count<>1 then
wscript.echo "zle uzycie skryptu. nalezy podac jeden argument - nazwe OU od ktorego zaczenie sie zamiana."
wscript.echo "przyklad: "&wscript.scriptname&" ""OU=ksiegowosc,OU=do zmiany"""
wscript.quit
end if

set oDom=getObject("LDAP://RootDSE")
domDNS=oDom.dnshostname
namingContext=oDom.defaultNamingContext

domDNS=join( split( right(namingContext, len(namingContext)-3),",DC="),"." )
'stdout.writeline domDNS
namingContext=wscript.arguments(0)&","&namingContext
wscript.echo namingContext

Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"

adoCOnnection.Open ""
If adoConnection.State <> 1 Then
locateUser="Creating ADO connection: Authentication Failed."
wscript.quit
End If
Set adoCmd = CreateObject("ADODB.Command")
Set adoCmd.ActiveConnection = adoConnection
adoCmd.Properties("Page Size") = 4000
adoCmd.CommandText = ";(&(ObjectCategory=Person)(ObjectClass=User));ADsPath,sn,GivenName;SubTree"
Set adoRecordset = adoCmd.Execute
'if adoRecordSet.Fields.Count = 0 then
while not adoRecordSet.EOF
sn=adoRecordset.Fields("sn").value
gn=adoRecordset.Fields("GivenName").value
path=adoRecordset.Fields("ADsPath").value
wscript.echo "imie: "&gn&" nazwisko: "&sn&" dn: "&path
if isNull(gn) or isEmpty(gn) or isNull(sn) or isEmpty(sn) or len(gn)<2 or len(sn)<2 then
wscript.echo "imie lub nazwisko puste. nie zmieniam."
else
wscript.echo "zmieniam cn..."
oupath="LDAP://"&right(path,len(path)-instr(path,","))
wscript.echo oupath
set oOU=GetObject(oupath)
oOU.moveHere path,"cn="&sn&" "&gn
if err.number <>0 then
wscript.echo "blad "&cstr(hex(err.number))&" "&err.description
err.clear
else
wscript.echo "ok."
end if
end if
wscript.echo vbcrlf
adoRecordset.moveNext
wend

Spread the love

Zostaw komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Time limit is exhausted. Please reload CAPTCHA.