如何将计算机作为SCCM任务序列中的一步移动到新OU?
要求:
由于这是一个任务序列步骤,该命令将在SCCM客户端本地执行,因此除非在可能受此任务影响的每个系统上安装该模块,否则不能使用Active-Directory模块。
命令行执行默认为CMD.exe,强制处理痛苦的字符串转义步骤。
答案 0 :(得分:0)
环顾四周,我发现a blog post详细信息SCCM允许在任务序列中执行一个名为"运行命令行"的步骤。但是,该博客文章解决方案不是独立的命令行执行。
此外,在尝试使用Powershell解决方案将本地主机(任何非域控制器)移动到新OU时,我发现a blog post有使用ADSI而不是Active-Directory模块的snippit。
将这些过程组合到单个命令行执行中,花了一些时间,但我能够将CMD.exe字符串解析/转义和Powershell字符串解析/转义组合成单个命令行执行,这将有效在SCCM任务序列中。
命令行:
C:\windows\system32\WindowsPowerShell\v1.0\powershell.exe -command iex \" `$TargetOU=\"\"OU=TargetOUName,DC=ConglomiCo,DC=com\"\"; `$SysInfo=New-Object -ComObject \"\"ADSystemInfo\"\";`$ComputerDN=`$SysInfo.GetType().InvokeMember(\"\"ComputerName\"\",\"\"GetProperty\"\",`$Null,`$SysInfo,`$Null);`$Computer=[ADSI]\"\"LDAP://`$ComputerDN\"\";`$OU=[ADSI]\"\"LDAP://`$TargetOU\"\";`$Computer.psbase.MoveTo(`$OU);" \"
注意:请务必在"运行命令行"中指定域帐户。具有适当权限的任务:
此解决方案包含命令行条目中的目标OU,但是它可以轻松修改以读取可能包含目标OU DN的注册表项,文件系统上的文本文件等。