【问题标题】:In PowerShell - How do I create parent and children OU's at the same time?在 PowerShell 中 - 如何同时创建父 OU 和子 OU?
【发布时间】:2014-06-28 07:55:09
【问题描述】:

我使用的是 Windows Server 2012 R2,我是管理员。我的 PowerShell 版本是 4.0。我的域是 DC=testdomene,DC=local。

我想完成以下工作: 1)创建父OU 2)同时创建一些子OU

我可以在 PowerShell 中手动执行此操作,但我想使用 PowerShell 的主要好处之一是以某种方式自动执行此操作。 “Help New-ADOrganizationalUnit -examples”没有给我任何同时涉及到父和子 OU 的答案。

创建父 OU: New-ADOrganizationalUnit -Name "US" -Path "DC=testdomene,DC=local" -description Parent -ProtectedFromAccidentalDeletion $false

创建第一个子 OU: New-ADOrganizationalUnit -Name "Nevada" -Path "OU=US,DC=testdomene,DC=local" -description Child -ProtectedFromAccidentalDeletion $false

创建第二个子 OU: New-ADOrganizationalUnit -Name "Texas" -Path "OU=US,DC=testdomene,DC=local" -description Child -ProtectedFromAccidentalDeletion $false

这给了我 OU US,以及孩子 OU 的内华达州和德克萨斯州。我将如何同时做到这一点?任何帮助表示赞赏。

【问题讨论】:

    标签: powershell scripting windows-server-2012-r2 powershell-4.0


    【解决方案1】:

    ActiveDirectory 模块或 Quest ActiveRoles AD 管理单元中没有对递归创建的内置支持。您必须手动完成。

    您可以编写自己的函数来检查父 out 是否存在或使用陷阱或 try/catch 来捕获错误,然后自动创建父 ou。

    【讨论】:

      【解决方案2】:

      哒哒! :) 是的,有办法做到这一点。我不会把解决方案归功于我,因为我从我的一个朋友那里得到了很多帮助。他真的不喜欢在互联网上被提及,所以现在,我将把他的名字排除在外。

      我使用国家、州和城市作为示例,但主要目的是创建一个组织,部门和子部门都在一个脚本中,并且在脚本运行时没有任何输入。首先,我将粘贴文本文件,然后粘贴使其全部工作的脚本。有些名字是挪威语,但有必要我会翻译意思。

      Textfile(1)演示如下: 文本文件名为OUStructure.txt

      US
      US/Florida
      US/Florida/Miami
      US/Texas
      US/Texas/Houston
      US/Texas/Dallas
      US/Nevada
      US/Nevada/Las Vegas
      US/Nevada/By1
      US/Nevada/By2
      US/Nevada/By2/Computers
      US/Colorado
      US/Colorado/Austin
      

      简短说明:By1 和 By2 是 town1 和 town2 的挪威语。计算机与城市无关。我只是想看看我是否可以在 sub 下制作更多的 sub OU。

      Textfile(2)演示如下: 文本文件的名称是OUStructure.txt。我想这就是我问问题时所寻找的。​​strong>

      TechCorp
      TechCorp\Production
      TechCorp\Management
      TechCorp\Sales
      TechCorp\IT
      

      脚本文件如下。脚本文件的名称是 import_OU_Fra_Fil.ps1

      Get-Content OUStructure.txt | Foreach-Object {
        $domene = 'DC=testdomene,DC=local'
        $alleOU = ''
        $ous = (Split-Path $_ -Parent).Split('\')
        [array]::Reverse($ous)
        $ous | Foreach-Object {
          if ($_.Length -eq 0) {
            return
          }
          $alleOU = $alleOU + 'OU=' + $_ + ','
        }
        $alleOU += $domene
        $nyOUNavn = Split-Path $_ -Leaf
      
        New-ADOrganizationalUnit -Name "$nyOUNavn" -Path "$alleOU" -ProtectedFromAccidentalDeletion $false
      }
      

      解释:

      作为脚本文件名一部分的 Fra_Fil 是挪威语的 From_File。

      DC=testdomene,DC=local 是我自己的域。

      alleOU 是 AllOU 的挪威语,意思是所有的 OU。

      nyOUNavn 是挪威语的 NewOUName。

      这对我有用,我希望它可以帮助任何寻求相同解决方案的人。我刚开始使用 StackOverflow,所以如果有人觉得需要编辑我的帖子以使其更清晰,请这样做。我将文本文件信息放在代码引号中,因为我不知道如何分隔这些行。我个人从中学到了很多。我的问题是,当我应该搜索拆分和反向数组时,我正在搜索解决方案。

      【讨论】:

        【解决方案3】:
        # change value of domain mane to your domain
        $MyDomain = "dc=myRMS,dc=local"
        
        #Connect to your domain container
        $connectionString = "LDAP://" + $MyDomain
        $objDomain  = [ADSI]$connectionString
        
        Get-Content OUStructure1.txt | Foreach-Object {
          $domain = 'DC=myRMS,DC=local'
          $newOU = ''
          $ous = (Split-Path $_ -Parent).Split('\')
          [array]::Reverse($ous)
          $ous | Foreach-Object {
            if ($_.Length -eq 0) {
              return
            }
            $newOU = $newOU + ',OU=' + $_
          }
          #$newOU += $domain
        
          $nyOUNavn = Split-Path $_ -Leaf
          $newOU = 'OU=' + $nyOUNavn + $newOU
        
          #Create new Organizational Unit
          $objOU = $objDomain.Create("organizationalUnit", "$newOU")
          $objOU.SetInfo()
        }
        

        这是上面提出的不同版本的代码。我使用了 LDAP 连接。

        【讨论】:

          【解决方案4】:

          NEW-ADOrganizationalUnit “内华达州” – 路径 “OU=Texas,OU=US,DC=testdomene,DC=local”

          只需使用 OU 两次,它就会嵌套。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-12-23
            • 2023-01-27
            • 2013-04-28
            • 2016-01-25
            • 2013-08-07
            相关资源
            最近更新 更多