使用Powershell将计算机移动到SCCM 2012任务序列中的新OU

时间:2014-04-09 14:41:47

标签: powershell active-directory sccm

如何将计算机作为SCCM任务序列中的一步移动到新OU?

要求:

  • Powershell而不是VBS
  • sccm客户端系统上没有“文件”

由于这是一个任务序列步骤,该命令将在SCCM客户端本地执行,因此除非在可能受此任务影响的每个系统上安装该模块,否则不能使用Active-Directory模块。

命令行执行默认为CMD.exe,强制处理痛苦的字符串转义步骤。

1 个答案:

答案 0 :(得分:0)

环顾四周,我发现a blog post详细信息SCCM允许在任务序列中执行一个名为"运行命令行"的步骤。但是,该博客文章解决方案不是独立的命令行执行。

此外,在尝试使用Powershell解决方案将本地主机(任何非域控制器)移动到新OU时,我发现a blog post有使用ADSI而不是Active-Directory模块的snippit。

将这些过程组合到单个命令行执行中,花了一些时间,但我能够将CMD.exe字符串解析/转义和Powershell字符串解析/转义组合成单个命令行执行,这将有效在SCCM任务序列中。

  • 在SCCM2012中:编辑任务序列时,单击添加,常规,"运行命令行"

命令行:

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);" \"

注意:请务必在"运行命令行"中指定域帐户。具有适当权限的任务:

  • SCCM客户端系统的管理执行权限
  • 移动计算机帐户对象的AD权限
  • 对目标OU的写访问权

此解决方案包含命令行条目中的目标OU,但是它可以轻松修改以读取可能包含目标OU DN的注册表项,文件系统上的文本文件等。