web-dev-qa-db-fra.com

J'ai besoin d'exporter une liste de tous les utilisateurs de notre domaine et je ne suis pas familier avec DSQUERY ou DSGET?

Je suis vraiment en difficulté pour créer la requête qui exportera les éléments suivants: Compte FirstName Nom Le nom de l'utilisateur réside dans

Idéalement, j'aimerais cela comme un CSV. Je n'ai pas accès au contrôleur de domaine, mais je peux exécuter DSQUERY/DSGET/etc. de mon pc.

6
Neil

En fonction de vos outils, vous pouvez faire

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

Cela créera une liste de nom de compte séparé de l'espace, prénom, lastname et emplacement.

La convertir en un vrai CSV prend un peu plus de travail.

$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`"
}

Qui vous obtiendra de la sortie comme

"samid","fn","ln","dn"
"jarey.boe","jarey","boe","cn=jarey.boe,ou=users,dc=contoso,dc=com"
5
sysadmin1138

dSQUERY fonctionne, mais la conversion en CSV en fractionnement sur un ou plusieurs espaces (\ S +) est ténu. Toute valeur d'attribut avec des espaces incorporés va déplacer les valeurs restantes à droite. De plus, par défaut DSQUERY s'arrêtera après la sortie de 100 objets; "-Limit 0" va émettre tous les résultats.

La bonne façon de faire cela via la ligne de commande utilise CSVDE:

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

La méthode obligatoire PowerShell est:

$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
6
charleswj81