2017-08-10 55 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