如何在 Powershell 脚本中添加子 OU
How to add Sub-OUs in Powershell Script
我们有一个 Powershell 脚本,可以创建新的学生帐户,对现有帐户进行必要的更改,并将帐户移动到基于学校的正确 OU。该脚本之前运行良好,因为 OU 结构非常扁平。所有学校 OU 都直接位于“学区学生用户”OU 下。
学区学生用户
- OMS
- OHS
- OES
但是,现在我们正在接收不符合该结构的新学校。我们增加了几所需要子 OU 的学校,而不是独立的学校级别。 (在 CompilationSchools 下表示)。
*edit-在 THS 下添加了额外级别的 OU,由“AHS”和“BHS”表示
- 学区学生用户
- -----OMS
- -----OHS
- -----OES
- -----编译学校
- ------------TMS
- ------------THS
- -------------AHS
- -------------BHS
- ------------TES
脚本将基本 OU 定义为 $base = "OU="+$ou+",OU=District Student Users,DC=district,DC=edu
我不知道如何在脚本中包含必要的子 OU,同时又不弄乱现有的基本 OU 定义。
# Move AD Object to the new OU
IF ($newschool -eq 1) {
Switch ($department)
{
"One Middle School" { $ou="OMS" }
"One High School" { $ou="OHS" }
"One Elementary" { $ou="OES" }
default { $ou="z_Unclassified" }
}
Write-Host " Also moved from"$exist.department"to"$department`r
$base = "OU="+$ou+",OU=District Student Users,DC=district,DC=edu"
Sleep 2
Move-ADObject -Identity $dn -TargetPath $base -server $dc }
ELSEIF ($newschool -eq 2) {
Write-Host " Account moved to z_DisabledAccounts OU"`r
$base = "OU=z_DisabledAccounts,OU=District Student Users,DC=district,DC=edu"
Sleep 2
Move-ADObject -Identity $dn -TargetPath $base -server $dc
}
您可以修改您的switch
语句:
$compSch= "OU=CompilationSchools"
Switch ($department)
{
"One Middle School" { $ou="OMS" }
"One High School" { $ou="OHS" }
"One Elementary" { $ou="OES" }
"One Compliation HS" { $ou="THS,$compSch" }
default { $ou="z_Unclassified" }
}
这是快速简便的解决方案,应该可以正常工作。额外的变量只是为了节省一些输入。
如果您的 OU 名称中可能包含可怕的字符,如逗号(我希望没有),或者只是为了避免混淆,您可能希望少一点懒惰,并适当连接 OU 字符串,类似于后面是怎么做到的。
"One Compliation HS" { $ou="THS," + $compSch }
我们有一个 Powershell 脚本,可以创建新的学生帐户,对现有帐户进行必要的更改,并将帐户移动到基于学校的正确 OU。该脚本之前运行良好,因为 OU 结构非常扁平。所有学校 OU 都直接位于“学区学生用户”OU 下。
学区学生用户
- OMS
- OHS
- OES
但是,现在我们正在接收不符合该结构的新学校。我们增加了几所需要子 OU 的学校,而不是独立的学校级别。 (在 CompilationSchools 下表示)。 *edit-在 THS 下添加了额外级别的 OU,由“AHS”和“BHS”表示
- 学区学生用户
- -----OMS
- -----OHS
- -----OES
- -----编译学校
- ------------TMS
- ------------THS
- -------------AHS
- -------------BHS
- ------------TES
脚本将基本 OU 定义为 $base = "OU="+$ou+",OU=District Student Users,DC=district,DC=edu
我不知道如何在脚本中包含必要的子 OU,同时又不弄乱现有的基本 OU 定义。
# Move AD Object to the new OU
IF ($newschool -eq 1) {
Switch ($department)
{
"One Middle School" { $ou="OMS" }
"One High School" { $ou="OHS" }
"One Elementary" { $ou="OES" }
default { $ou="z_Unclassified" }
}
Write-Host " Also moved from"$exist.department"to"$department`r
$base = "OU="+$ou+",OU=District Student Users,DC=district,DC=edu"
Sleep 2
Move-ADObject -Identity $dn -TargetPath $base -server $dc }
ELSEIF ($newschool -eq 2) {
Write-Host " Account moved to z_DisabledAccounts OU"`r
$base = "OU=z_DisabledAccounts,OU=District Student Users,DC=district,DC=edu"
Sleep 2
Move-ADObject -Identity $dn -TargetPath $base -server $dc
}
您可以修改您的switch
语句:
$compSch= "OU=CompilationSchools"
Switch ($department)
{
"One Middle School" { $ou="OMS" }
"One High School" { $ou="OHS" }
"One Elementary" { $ou="OES" }
"One Compliation HS" { $ou="THS,$compSch" }
default { $ou="z_Unclassified" }
}
这是快速简便的解决方案,应该可以正常工作。额外的变量只是为了节省一些输入。
如果您的 OU 名称中可能包含可怕的字符,如逗号(我希望没有),或者只是为了避免混淆,您可能希望少一点懒惰,并适当连接 OU 字符串,类似于后面是怎么做到的。
"One Compliation HS" { $ou="THS," + $compSch }