我正在编写PowerShell脚本以列出我们的活动目录中的所有用户。在我们的主要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 :(得分: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
答案 1 :(得分:0)
不确定这是否正是您要查找的内容,但我会获得您想先在数组中搜索的所有OU /容器的列表,然后搜索所有这些对象。
# 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。