【问题标题】:VBS Scripting to move computers from one OU to the next将计算机从一个 OU 移动到下一个 OU 的 VBS 脚本
【发布时间】:2016-02-20 01:13:33
【问题描述】:

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

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

【问题讨论】:

  • 我强烈建议您改用 powershell。 vbscript 是旧帽子,更难使用。
  • 我考虑过这一点,并且会朝那个方向发展,但是与 AD 相关的 Powershell 需要 RSAT 工具来用于运行脚本的任何客户端。这里的目标是让现场服务技术人员使用任何计算机并使用来自 SCCM 的应用程序目录并运行一个打包的应用程序来为他们完成这项工作。让它安装 RSAT 工具是多余的。

标签: vbscript active-directory move ou


【解决方案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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    • 2010-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多