我使用的是Windows Server 2012 R2,我是管理员。我的PowerShell版本是4.0。我的域名是DC = testdomene,DC = local。
我想完成以下事项: 1)创建父OU 2)同时创建一些子OU(
)我能够在PowerShell中手动执行此操作,但我想使用PowerShell的一个主要好处是以某种方式自动执行此操作。 "帮助New-ADOrganizationalUnit -examples"当涉及到父母和孩子的同时,不要给我任何答案。
创建父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 OU,带着孩子OU的内华达州和德克萨斯州。我怎么能同时完成这个?任何帮助表示赞赏。
答案 0 :(得分: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
简短说明:对于town1和town2,By1和By2是挪威语。计算机与城市无关。我只是想看看我是否可以在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的Norwegian。
DC = testdomene,DC = local是我自己的域名。
alleOU对于AllOU来说是挪威语,意思是所有的OU。
nyOUNavn是NewOUName的挪威语。
这对我有用,我希望它可以帮助那些寻找相同解决方案的人。我刚刚开始使用StackOverflow,所以如果有人觉得需要编辑我的帖子以使其更清晰,请这样做。我把文本文件信息放在代码引号中,因为我无法弄清楚如何分隔行。就个人而言,我从中学到了很多东西。我的问题是,我正在谷歌搜索解决方案,因为我应该谷歌搜索分裂和反向数组的目的。
答案 1 :(得分:1)
在ActiveDirectory模块或Quest ActiveRoles AD Snapin中没有内置支持递归创建。你必须手动完成。
您可以编写自己的函数来检查父项是否存在,或者使用陷阱或try / catch来捕获错误,然后自动创建父项。
答案 2 :(得分:1)
NEW-ADOrganizationalUnit“Nevada”-path“OU = Texas,OU = US,DC = testdomene,DC = local”
只需使用两次OU即可嵌套。
答案 3 :(得分: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连接。