Verifique a existência de contas de domínio com o script Powershell

2

Existe um cmdlet ou script Powershell para consultar o Active Directory se uma determinada conta de domínio (como "myDomain \ myUser") existir?

    
por Max 05.05.2010 / 00:31

4 respostas

3

Pergunta antiga, eu sei, mas sinto que preciso adicionar esse bit aqui porque nenhuma das respostas anteriores usa qualquer forma de tratamento de erros.

Além disso, se você precisar oferecer suporte a usuários de vários domínios, terá que consultar o controlador de domínio correto (ou consultar o Catálogo Global e especificar o DN de uma partição de diretório).

$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
}
    
por 02.03.2016 / 18:23
3

Isso é o que usamos para validar as contas. Ele depende, é claro, do Import-Module ActiveDirectory e de um DC do 2008 R2 ou de um DC executando o ADWS:

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 }
    
por 16.03.2012 / 20:24
1

Você pode usar o objeto .NET do Pesquisador de diretório para fazer isso.

Aqui está um trecho de código muito não otimizado de um dos meus scripts de utilitário que ficou de lado.

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

Portanto, você deve poder alterar o .objectclass para .cn ou .name e, em seguida, comparar com isso.

Ou não seja preguiçoso como eu sou e leia como construir uma consulta adequada:)

    
por 05.05.2010 / 00:38
0

Eu pegaria os cmdlets do Quest AD Roles - link - e usaria seu cmdlet Get-QADUser com o parâmetro -Identity.

Por exemplo,

$username = "mydomain\myusername"

if (Get-QADUser -Identity $username)
{Write-Host "It's alive"}
else
{Write-Host "Account does not exist."}
    
por 20.10.2010 / 23:24