1

我正在使用Windows Server 2012 R2,并且我是管理员。我的PowerShell版本是4.0。我的域是DC = testdomene,DC =本地。在PowerShell中 - 如何在同一时间创建父级和子级OU?

我要做到以下几点: 1)创建一个父OU 2)创建一些子OU的同时

我能够在PowerShell中手动做到这一点,但我想主要原因之一使用PowerShell的好处是以某种方式自动执行此操作。 “帮助新ADOrganizationalUnit示例”在同时处理父母和儿童OU时不会给我任何答案。

创建父OU: 新ADOrganizationalUnit -Name “US” -Path “DC = testdomene,DC =本地” -description家长-ProtectedFromAccidentalDeletion $假

创建的第一个孩子OU: 新ADOrganizationalUnit -name “内华达” -Path “OU = US,DC = testdomene,DC =本地” -description儿童-ProtectedFromAccidentalDeletion $假

创建第二子OU: 新ADOrganizationalUnit -name “得克萨斯” -Path“OU = US,DC = testdomene,DC =本地“-description Child -ProtectedFromAccidentalDeletion $ false

这给了我美国的OU,与孩子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。电脑与城市无关。我只是想看看是否可以在分区下创建更多的子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 =本地是我自己的域。

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

nyOUNavn是挪威语为NewOUName。

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

1

在ActiveDirectory模块或Quest ActiveRoles AD Snapin中没有内置的对递归创建的支持。你必须手动完成。

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

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连接。

1

NEW-ADOrganizationalUnit“内华达” -path“OU =得克萨斯州,OU = US,DC = testdomene,DC =本地”

只需使用两次OU,它会窝。

相关问题