我正在编写一个 Powershell 脚本来将所有公司用户从 CSV 文件填充到 Active Directory。
该脚本使用 Powershell 命令New-ADUser
,对于每个用户,它应该知道添加它们的路径在哪里,例如:
"OU=IT Dept,OU=Users,DC=local,DC=contoso"
问题是:这个 Active Directory 还没有任何用户,所以没有创建组织单位,每当我运行脚本时,如果路径不存在,则不会创建用户。
我已经查找了创建组织单位的命令,例如New-ADOrganizationalUnit
or dsadd
,但是它们不支持递归创建,例如
"OU=Helpdesk,OU=IT Dept,OU=Users,DC=local,DC=contoso"
如果
"OU=IT Dept,OU=Users,DC=local,DC=contoso"
还不存在。
有没有办法使用New-ADOrganizationalUnit做到这一点?
谢谢
正如Mike在评论中提到的,您需要逐步遍历树中的每个级别并测试 OU 祖先的存在,然后从最顶层和最底层创建不存在的祖先。
只要
New-ADOrganisationalUnit
没有 -Recurse 参数,这是我能想到的最优雅的方式:使用 WHATIF
没有 WHATIF
如果路径中有不存在的非 OU 容器,它将中断。
的输出
$NextOU.IndexOf("OU=")
区分大小写,对于所有小写ou=
尝试都将返回 -1:$NextOU.IndexOf("OU=",[StringComparison]"CurrentCultureIgnoreCase")
试试这种方法;它更简单: https ://dimitri.janczak.net/2016/04/20/recursive-ou-creation-with-powershell/