【问题标题】:How to add Sub-OUs in Powershell Script如何在 Powershell 脚本中添加子 OU
【发布时间】:2021-07-23 01:31:12
【问题描述】:

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

学区学生用户

  • OMS
  • 职业健康与安全
  • OES

但是,现在我们正在建立不符合结构的新学校。我们添加了一些需要子 OU 的学校,而不是独立学校级别。 (在 CompilationSchools 下注明)。 *edit-在“AHS”和“BHS”指示的 THS 下添加了额外级别的 OU

  • 学区学生用户
  • -----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 
  }

【问题讨论】:

    标签: powershell active-directory


    【解决方案1】:

    您可以修改您的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 }
    

    【讨论】:

    • 这很棒,而且效果很好,谢谢!我忘了补充一点,我在某些情况下还有一个嵌套级别——所以在 THS 下,还有一个额外的级别。 (*我编辑了帖子以反映附加信息)我不知道这样做是否是最简单的方法,但我只定义了一个级别 $thsSch="OU=THS,OU=CompilationSchools" 并使用嵌套学校的那个变量。
    • 不用担心,是的,这样做的好处是,如果需要,您可以在树中回收该方法。可能会有一点你想要更复杂一点,但我认为无论如何都应该避免太多的 OU 级别。 switch 语句肯定比嵌套的 if 语句负载好!
    猜你喜欢
    • 2014-06-28
    • 2012-05-04
    • 2020-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-28
    相关资源
    最近更新 更多