Problème exportation powershell en csv

[Fermé]
Signaler
-
Messages postés
89
Date d'inscription
jeudi 9 juin 2011
Statut
Membre
Dernière intervention
1 août 2016
-
Bonjour,

j'ai programmé le script suivant pour aller chercher une liste de user et la comparer à l'AD pour en resortir les informations qui en découlent (a partir du login, récupérer le nom, le service, etc...)


Mon problème est que lorsque j'essaie d'importer ces informations en csv, il me ressort un tableur vide. Quelqu'un pourrait me dire pourquoi?

Je dois également récupérer le nombre de postes pour chaque utilisateur ainsi que le nom de ces postes, qui en soit ne sont pas des informations en clair dans l'AD. J'aimerai donc savoir si vous aviez une idée pour les récuperer. J'admets que sur ca je sèche.

function Search($Sam)
{
$ads = new-object system.directoryservices.directorysearcher([ADSI]"LDAP://DC=...,DC=...","(&(objectCategory=person)(objectClass=user)(samaccountname=$Sam))")
$ads.pagesize = 1000
$result = $ads.findAll()

foreach ($i in $result)
{ # pour chaque users
# on récupère ses infos

$login = $i.Properties.samaccountname
$nom_complet= $i.Properties.name
$direction = $i.Properties.company
$respo = $i.Properties.manager -split ',' -replace '^CN=|,.*$'
$respo_new = $respo[0]

$user = $i.getdirectoryentry()

$distinguishedName = $user.Properties.distinguishedName


write-host $login
write-host $nom_complet
write-host $direction
write-host $respo_new

$outList | Select-Object -Property samaccountname, name, company, $respo_new | Export-Csv -path C:\...\UserAD.csv -NoTypeInformation
} # fin du foreach (chaque user)

#$dn = "LDAP://"+$result.GetDirectoryEntry().DistinguishedName
}

$file = "C:\Users\Public\Documents\Liste.txt"
$data = get-content $file
$data | %{

Search $_
}



PS (c'est mon premier script, soyez indulgent :) )

Merci à tous

1 réponse

Messages postés
89
Date d'inscription
jeudi 9 juin 2011
Statut
Membre
Dernière intervention
1 août 2016
34
Bonjour

Comme mentionner dans la meilleure reponse a la question sur ce site:

https://stackoverflow.com/questions/21047185/how-to-export-data-to-csv-in-powershell

Ce que je vous suggere dans le foreach d'ajouter chaque valeur dans un tableau

Apres le foreach, ecrire le tableau dans le csv.

Je n'ai pas le moyen de tester presentement mais il me semble que cela aura l'air de ca:



#Juste avant le foreach
$tableauUsagers= @()
foreach ($i in $result)
[...]

$outList | Select-Object -Property samaccountname, name, company, $respo_new

$tableauUsagers += New-Object PSObject -Property $outList

} # fin du foreach (chaque user)

# Ici, ecriture du CSV
$tableauUsagers | export-csv -path C:\...\UserAD.csv -NoTypeInformation

[...]



C'est une facon interessante car cela minimise le nombre d'ecriture au fichier (disque dur lent) versus utilisation de la memoire (VIVE comme l'eclair!)

Est-ce que cela vous enraille dans la bonne direction? Je l'espere!

Bon succes!