1

我使用的是 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 的内华达州和德克萨斯州。我将如何同时做到这一点?任何帮助表示赞赏。

4

4 回答 4

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。我想这就是我问问题时所寻找的。

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,所以如果有人觉得需要编辑我的帖子以使其更清晰,请这样做。我将文本文件信息放在代码引号中,因为我不知道如何分隔这些行。我个人从中学到了很多。我的问题是,当我本应出于拆分和反向数组的目的进行谷歌搜索时,我正在谷歌搜索解决方案。

于 2014-05-14T16:09:11.140 回答
1

ActiveDirectory 模块或 Quest ActiveRoles AD 管理单元中没有对递归创建的内置支持。您将不得不手动进行。

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

于 2014-05-10T17:18:14.353 回答
1

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

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

于 2017-01-30T15:47:04.003 回答
0
# 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 连接。

于 2016-02-04T17:06:06.397 回答