我正在为我工作的公司打包脚本,这将允许现场服务技术人员将私人工作站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时,我没有收到该错误消息。这就是我现在被困住的地方。
目前脚本编写在我的个人实验室中。
答案 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。