Submitted By: Imran Hashim

Moves all the computers listed in a text file to a new OU. The script also creates and/or updates a log file with the original distinguished name of each computer.

Visual Basic
on error resume next

CONST ForReading = 1
Const ForAppending = 8

Set oFS = CreateObject("Scripting.FileSystemObject")
Set oTS = oFS.OpenTextFile("oldcomputers.txt",ForReading)
set oLS = oFS.OpenTextFile("movecomputerlog.txt",ForAppending,True)
Set objRootDSE = GetObject("LDAP://RootDSE")
strDNSDomain = objRootDSE.Get("defaultNamingContext")
Set objCommand = CreateObject("ADODB.Command")
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
objCommand.ActiveConnection = objConnection

'Modify the following line to desired OU
Set objNewOU = GetObject("LDAP://OU=Disabled Computers,dc=test,dc=local")
Do Until oTS.AtEndOfStream
        strComputer = oTS.ReadLine
        strQuery = _
          "<LDAP://" & strDNSDomain & ">;(&(objectCategory=computer)(cn=" & strComputer & "));adspath,cn;subtree"
        objCommand.CommandText = strQuery
        Set RS = objCommand.Execute
        While not RS.EOF
                strPath = RS.Fields("adspath")
                strName = "CN=" & RS.Fields("cn")
                Set objMoveComputer = objNewOU.MoveHere(strPath,strName)