首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为一个用户搜索整个Active Directory的最佳方法

为一个用户搜索整个Active Directory的最佳方法
EN

Stack Overflow用户
提问于 2019-05-02 23:40:33
回答 2查看 285关注 0票数 1

有人可以帮助我如何才能搜索用户的所有AD,我不知道谁存在或不存在。

根域(NA1.local)

资源域(domain1.local,domain2.local,domain3.local)

MSmith (不确定他\她在域中的位置,也不确定用户AD是否已从AD中删除) $user = PSmith

代码语言:javascript
复制
foreach ($domain in $domains)
{
  Get-ADUser -Identity $username -Server $domain  -ErrorAction SilentlyContinue
if ($? -eq 'True') { 
                $forest = Get-ADUser $username -Server $domain
                Add-ADGroupMember -Identity $GPName -Member $forest -Server $VbrickSrv } 
}
EN

回答 2

Stack Overflow用户

发布于 2019-05-03 00:44:17

使用-Filter-LDAPFilter-Identity参数指定用户名。过滤器通常更快,因为它们在DC上进行过滤,而不是在运行脚本的机器上进行本地过滤。此外,如果在使用筛选器(通过identity)参数时未返回任何内容,则cmdlet不会生成异常。

代码语言:javascript
复制
$user = Get-ADUser -Filter { SamAccountName -eq 'psmith' }
...

我通常会告诉您将搜索基础设置为对您的搜索有意义的内容。限制越多越好,但我看到你想搜索整个域。把它放在脑后就行了。

请查看下面的文章以进行更深入的讨论。

https://social.technet.microsoft.com/wiki/contents/articles/28485.filters-with-powershell-active-directory-module-cmdlets.aspx

票数 1
EN

Stack Overflow用户

发布于 2019-05-03 08:39:37

正如@Adam所说的使用筛选器而不是where子句(这是正确的答案),当您找到用户时,您可以简化您的代码

代码语言:javascript
复制
foreach ($domain in $domains) {
    If ($u = Get-ADUser -Filter 'SamAccountName -eq "psmith"' -server $domain) {
        Add-ADGroupMember -Identity $GPName -Members $u -Server $domain
        Break  #this should exit from the foreach loop
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55955920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档