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,它會窩。

相關問題