Obter somente usuário OU do Active Directory usando Powershell / CLI

0

Eu quero ter apenas OU de usuário específico.

Exemplo: o comando deve exibir qual usuário OU JOHN pertence a

USERNAME = OU_NAME
    
por Syed Jahanzaib 15.02.2017 / 10:30

4 respostas

1

Isso funciona para mim:

$user = Get-ADUser -Identity [USERNAME] -Properties CanonicalName

$userOU = ($user.DistinguishedName -split ",",2)[1]

Fonte: link

    
por 15.02.2017 / 11:12
1

O script Get-ADPathname.ps1 fornece uma técnica muito simples para isso que não exige análise de string:

PS C:\> (Get-ADUser kendyer).DistinguishedName | Get-ADPathname -Format X500Parent
OU=Sales,DC=fabrikam,DC=com

(A análise de string não é robusta, como declarado no artigo).

    
por 15.02.2017 / 23:35
1

Se você não tiver o Módulo AD instalado, também poderá usá-lo. Achei isso muito útil quando executei scripts onde precisei de AD-Information, mas não tinha o Módulo AD instalado. :

$strFilter = "(&(objectCategory=User)(samAccountName=$env:username))"
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.Filter = $strFilter
$objPath = $objSearcher.FindOne()
$objUser = $objPath.GetDirectoryEntry()
$strUserHomeDrive = $objUser.sAMAccountName
$DN = $objUser.distinguishedName
$ADVal = [ADSI]"LDAP://$DN"
$WorkOU = $ADVal.Parent
$WorkOU

Agora, $WorkOU retornaria uma string como esta LDAP://OU=userou,OU=userou2,DC=internal,DC=domain,DC=com , que você pode filtrar da maneira que quiser.

    
por 16.02.2017 / 10:45
0

Eu usei o script de Laage, mas mudei um pouco porque usamos ',' em nossos nomes. Após a mudança, continuará a trabalhar para nomes sem ','.

$ user = Get-ADUser -Identity [USERNAME]

$ userOU = ($ user.DistinguishedName -split "=", 3) [- 1]

    
por 15.01.2018 / 13:32