如何在 Powershell 脚本中添加子 OU

How to add Sub-OUs in Powershell Script

我们有一个 Powershell 脚本,可以创建新的学生帐户,对现有帐户进行必要的更改,并将帐户移动到基于学校的正确 OU。该脚本之前运行良好,因为 OU 结构非常扁平。所有学校 OU 都直接位于“学区学生用户”OU 下。

学区学生用户

但是,现在我们正在接收不符合该结构的新学校。我们增加了几所需要子 OU 的学校,而不是独立的学校级别。 (在 CompilationSchools 下表示)。 *edit-在 THS 下添加了额外级别的 OU,由“AHS”和“BHS”表示


脚本将基本 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 }