使用Powershell脚本检查域帐户的存在

如果给定的域帐户(如“myDomain \ myUser”)存在,是否有Powershell cmdlet或脚本查询Active Directory?

老问题,我知道,但我觉得我需要在这里添加这一点,因为没有任何以前的答案使用任何forms的error handling。

此外,如果您需要支持来自多个域的用户,则必须查询正确的域控制器(或查询全局编录并指定目录分区的DN)。

$Domainname = 'ABC' $Username = 'Administrator' Try { $DomainController = Get-ADDomainController -DomainName $DomainName -Discover -ErrorAction Stop Get-ADUser -Identity $Username -Server $DomainController -ErrorAction Stop # user account exists } Catch [Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException] { # no error, user account does not exist } Catch { # Domain controller not found, domain unreachable, authentication failure or another error occurred } 

这是我们用来validation帐户。 它当然依赖于Import-Module ActiveDirectory和一个2008 R2 DC或一个运行ADWS的DC:

 function validateUser { param( [string]$username ) # If the username is passed without domain\ if(($username.StartsWith("domain\")) -eq $false) { $user = Get-ADUser -Filter { SamAccountName -eq $username } if (!$user) { return $false } else { return $true } } elseif(($username.StartsWith("domain\")) -eq $true) { $username = ($username.Split("\")[1]) $user = Get-ADUser -Filter { SamAccountName -eq $username } if (!$user) { return $false } else { return $true } } } $userCheck = validateUser -username smith02 if($userCheck -eq $true) { do stuff } else { user doesn't exist } 

您可以使用Directory Searchcher .net对象来执行此操作。

这是一个非常不合适的代码片段,来自我的一个实用程序脚本,已经被放弃了。

 $AD = [ADSI]"<ldap_connection_string>" $query = New-Object System.DirectoryServices.DirectorySearcher $query.SearchRoot = $AD $Users = $query.FindAll() | Where-Object {$_.properties.objectclass -eq "user"} 

所以你应该可以把.objectclass .cn.name ,然后再匹配。

或者不要像我一样懒惰,并阅读如何构build一个正确的查询:)

我将获取Quest ADangular色cmdlet – http://www.quest.com/powershell/activeroles-server.aspx – 并使用-Identity参数来使用他们的Get-QADUser cmdlet。

例如,

 $username = "mydomain\myusername" if (Get-QADUser -Identity $username) {Write-Host "It's alive"} else {Write-Host "Account does not exist."}