检查主机名并移至适当 OU 的脚本

检查主机名并移至适当 OU 的脚本

是否可以创建一个“通用”脚本来检查主机名的前三个字母并将主机移动到适当的 OU?

例如,以 TKYxxxxx 开头的主机名是位于东京的主机,当脚本检测到 TKY 时,它会将该主机移动到东京站点 OU。

是否可以/建议更进一步,将此脚本作为登录脚本的一部分启动,该登录脚本检查 AD 中是否存在主机名,如果不存在,则检查主机名并将其移动到适当的站点 OU。如果没有匹配,则将其保留在计算机 OU 中。

提前致谢。

答案1

下面的操作可以完成这项工作,但请小心,并先进行测试以了解其工作原理!

dsquery 计算机 -name tky* | dsmove -newparent "ou=tokyo,dc=x,dc=com"

答案2

通过“通用”,我想说的是,如果您的约定定义明确,并且知道适当的 LDAP 路径,那么就很有可能做到这一点,但您确实需要自己编写这个脚本(或让别人为您编写)。您需要做的就是遍历您的计算机对象(通常是“for each”或“do while”循环),然后执行“if...elseif...else”或 case(或 switch)构造来实现神奇的效果。

提示:我通常将“else”(或 case 语句的 default 子句)保留为“WTF”的万能词。这适用于不符合命名约定并向您发出警报的机器。要么将语句打印到控制台,要么写入日志文件(记录所有内容始终是良好做法),要么发送包含所有 WTF 的电子邮件。

提示:当仅查找 Windows 服务器时,我会解析 Object.operatingSystem 属性以获取模式“Windows服务器“。此模式与每个 Windows Server 版本的文本匹配。

我知道如何在 VBScript 和 Perl 中最好地做到这一点,但在 Powershell、JavaScript、Python 中也非常有可能。任何可以连接到 AD/LDAP 的东西,真的……

查看Microsoft Technet 脚本中心存储库。您可能会发现某些东西能满足您的需要。

相关内容