2017-08-10 88 views
0

我正在編寫一個PowerShell腳本,以列出我們的活動目錄中的所有用戶。在我們的主要OU中,我們擁有子OU,有兩件事情我正在努力。從特定OU導出用戶

首先我需要從這個報告中排除特定的子OU我不知道如何做到這一點。我遇到的第二個問題是,我想有OU他們中包括在報告中,此刻我得到這樣的輸出:

DisplayName CanonicalName 

Kanye West ad.test/All Users/People that have left/Kanye West 

我倒是排除「ad.test /所有用戶「和」/ Kanye west「。所以我想輸出的是SUB OU名稱。

這是我到目前爲止寫:

Get-ADUser -Filter * -SearchBase "OU=All Users, DC=ad,DC=test" -Properties DisplayName, CanonicalName | select DisplayName, CanonicalName | Export-CSV c:\experiment.csv 
+0

感謝編輯@Matt – Navee

+0

沒問題。如果你堅持看看我做了什麼來了解你以後可以做些什麼。我們都在這裏提供幫助。 – Matt

+0

只是看了一下,謝謝這將有助於我的下一篇文章:) – Navee

回答

0

如果您只需要從一個OU輸出,我建議去該位置第一。

Import-Module activedirectory 
Set-Location 'AD:\OU=People that have left,OU=All Users,DC=ad,DC=test' 
Get-ADUser -Filter * -Properties DisplayName,CanonicalName | Select-Object DisplayName,CanonicalName | Where-Object CanonicalName -ne 'Kanye West' | Export-CSV C:\Experiment.csv 

地址:

Import-Module activedirectory 
Get-ADUser -Filter 'CanonicalName -ne "Kanye West"' -SearchBase 'OU=People that have left,OU=All Users,DC=ad,DC=test' -Properties DisplayName,CanonicalName | 
    Select-Object DisplayName,CanonicalName | 
    Export-CSV C:\Experiment.csv 
0

不知道這是你正在尋找,但正是我會得到你想要的數組中的第一搜索所有OU的/ Container的列表和然後搜索所有這些對象。

# The OU you want to start searching from 
$baseOU = "OU=All Users, DC=ad,DC=test" 
# Any OUs that you do not want to be searched 
$ouOmits = "All users","Kanye West" 
# Get all sub OUs and OU of $baseOU minus any OU that is in the omission list 
$ousToSearch = Get-ADOrganizationalUnit -SearchBase $baseOU -Filter * | 
    Where-Object{$_.name -notin $ouOmits} | 
    Select -Expand DistinguishedName 

如果你只有PowerShell的2.0

$ousToSearch = Get-ADOrganizationalUnit -SearchBase $baseOU -Filter * | 
    Where-Object{$ouOmits -notcontains $_.name} | 
    Select -Expand DistinguishedName 

這樣會得到你想要搜索所有OU的。所以現在讓我們循環遍歷它們並獲得我們實際需要的所有對象。

$ousToSearch | ForEach-Object{ 
    Get-ADUser -Filter * -SearchBase $_ -SearchScope OneLevel -Properties DisplayName,CanonicalName 
} 

通常搜索是遞歸的。爲了確保我們省略了預期的工作,我們將搜索範圍限制在我們要求的OU。

+0

這是一種遺憾'-SearchBase'不接受'String []'類型。只需添加,過濾左側,格式右側。 OP希望排除某些OU和用戶。 '-Filter'DistinguishedName -notmatch「^ CN =。+,。*,OU = All \ sUsers」 - 和CanonicalName -ne「Kanye West」'' – TheIncorrigible1

+0

真的很遺憾。我發現自己的方式更加清潔,如果他的實際用例有更多的OU,那麼這樣做可能會更簡單。當有對象具有此信息時,我討厭使用正則表達式來處理DN。 – Matt

+0

我只是基於我自己的環境的Get-ADUser給我的過濾器示例。我不常與超級廣告合作。 – TheIncorrigible1