繁体   English   中英

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

[英]Move Computer to new OU in SCCM 2012 Task Sequence with Powershell

在SCCM任务序列中,如何将计算机移至新的OU?

要求:

  • Powershell代替VBS
  • sccm客户端系统上没有“文件”

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

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

在网上环顾四周,我发现了一篇博客文章 ,其中详细介绍了SCCM允许在任务序列中执行称为“运行命令行”的步骤。 但是,该博客文章解决方案不是独立的命令行执行。

另外,我在尝试Powershell解决方案将本地主机(任何非域控制器)移动到新的OU时,发现了一个带有摘要的博客文章,其中提到使用ADSI而不是Active-Directory模块。

将这些过程组合到单个命令行执行中,花费了一些时间,但是我能够解决将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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM