2

我正在为我工​​作的公司打包一个脚本,这将允许现场服务技术人员将私人工作站 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 中时,我没有收到该错误消息。这就是我现在卡住的地方。

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

4

1 回答 1

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。

于 2016-02-22T16:18:08.680 回答