在整个Active Directory中搜索一个用户的最佳方法

时间:2019-05-02 15:40:33

标签: powershell powershell-v3.0

有人可以协助我如何在AD的所有用户中搜索我不知道是否存在的用户。

根域(NA1.local)

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

MSmith(不确定他\她位于域中的位置还是用户标识已从AD中删除) $ user = PSmith

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 } 
}

2 个答案:

答案 0 :(得分:1)

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

$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 :(得分:0)

以及@Adam关于使用过滤器而不是var url = document.URL; var i = url.indexOf('#') + 6; // 6 is length of "#" + the word "inbox" var answer = url.substr(0, i); 子句的说法(这是正确的答案),您可以在找到用户时稍微简化代码

where