Eu preciso exportar uma lista de todos os usuários em nosso domínio e não estou familiarizado com DSQUERY ou DSGET?

5

Estou realmente com dificuldades para criar a consulta que exportará o seguinte: Conta Primeiro nome Último nome a OU em que o usuário reside em

Idealmente, eu gostaria que fosse um CSV. Eu não tenho acesso ao controlador de domínio, mas posso executar DSQUERY / DSGET / etc. do meu pc.

    
por Neil 05.10.2012 / 23:18

2 respostas

3

Dependendo das suas ferramentas, você pode fazer

dsquery user dc=contoso,dc=com | dsget user -samid -fn -ln -dn > names.csv 

Isso criará uma lista separada por espaço do nome, nome, sobrenome e local da conta.

Convertê-lo em um verdadeiro csv leva um pouco mais de trabalho.

$userList=dsquery user dc=contoso,dc=com | dsget user -samid -fn -ln -dn
foreach ($user in $userList) {
    $outstring=$user.trim(" ") -replace('\s+',',')
    write-host  '"$outstring'"
}

Qual você terá como saída

"samid","fn","ln","dn"
"jarey.boe","jarey","boe","cn=jarey.boe,ou=users,dc=contoso,dc=com"
    
por 05.10.2012 / 23:56
5

dsquery funciona, mas a conversão para CSV dividindo em um ou mais espaços (\ s +) é tênue. Qualquer valor de atributo com espaços incorporados mudará os valores restantes para a direita. Além disso, por padrão, o dsquery irá parar após a saída de 100 objetos; "-limit 0" irá mostrar todos os resultados.

A maneira correta de fazer isso via linha de comando é usando csvde:

csvde -f names.csv -r "(&(objectClass=user)(objectCategory=user))" -l samAccountName,givenName,sn

O método obrigatório do PowerShell é:

$a = [adsisearcher]'(&(objectClass=user)(objectCategory=user))'
$a.PageSize = 1000
$a.PropertiesToLoad.AddRange(@('samAccountName','givenName','sn','distinguishedName'))
$a.FindAll() | ForEach-Object {
    $b = $_.properties
    $op = '' | select DN,sAMAccountName,sn,givenName
    $op.DN = $b.distinguishedname[0]
    if ($b.samaccountname) { $op.samAccountName = $b.samaccountname[0] }
    if ($b.givenname) { $op.givenName = $b.givenname[0] }
    if ($b.sn) { $op.sn = $b.sn[0] }
    $op
} | Export-Csv names3.csv -NoTypeInformation
    
por 02.12.2012 / 19:19