VBS脚本将计算机从一个OU移动到下一个OU

时间:2016-02-20 01:13:34

标签: vbscript active-directory move ou

我正在为我工​​作的公司打包脚本,这将允许现场服务技术人员将私人工作站OU中的计算机转换为团队工作站OU,反之亦然。

这是现在这个剧本的一小部分,而且让我在一天的大部分时间都感到困惑。我已尝试过这个剧本的不同版本并登陆了一个我相信会让我走上正轨。

strComputer = "." 
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") 
Set colItems = objWMIService.ExecQuery("Select Name from Win32_ComputerSystem",,48) 
For Each objItem in colItems 
strPCName = objItem.Name 
Next 
Set objNewOU = GetObject("LDAP://OU=Computers,OU=Corporate,DC=xxxxx,DC=net") 
Set objMoveComputer = objNewOU.MoveHere("LDAP://CN=" & strPCName & ",OU=Computers,OU=Corporate,DC=xxxxx,DC=net",vbnullstring) 

我收到错误,服务器上没有这样的对象。当我将计算机手动放入有问题的OU时,我没有收到该错误消息。这就是我现在被困住的地方。

目前脚本编写在我的个人实验室中。

1 个答案:

答案 0 :(得分:1)

通过使用以下脚本,我能够获得有效的解决方案。

Set objSysInfo = CreateObject("ADSystemInfo") 
strComputerDN = objSysInfo.ComputerName

Set objNewOU = GetObject("LDAP://OU=Private Workstations,OU=xxxx,OU=xxxx,DC=xxxx,DC=xxxx") 
Set objMoveComputer = objNewOU.MoveHere _ ("LDAP://" & strComputerDN, vbNullString)

根据脚本的行为判断,它使用strComputerDN来确定计算机的位置,objNewOU确定计算机的运行位置。 objmoveComputer尽可能地合并这些信息,以便将计算机移动到它的OU。