Question
Creation de groupes de distribution depuis CSV
- Sébastien Lozé
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 5
- Remerciements reçus 0
Je viens de me lancer tout récemment en Powershell.
J'essaie de coder un script me permettant de créer automatiquement des groupes de distribution à partir d'un fichier CSV.
La création d'un groupe fonctionne, la récupération d'information depuis le CSV également, j'arrive à afficher les variables que je récupère mais pas à les utiliser dans des commandes telles que :
$objGroupe.Put(\"sAMAccountName\",$GroupName)
Le $GroupName n'est pas bien interprété alors que si j'appelle cette variable avec cette commande, cela fonctionne :
write-output ([string]::Concat(\"Add group : \",$Records.GroupName,\" \", \"in :\",$Records.Description))
Je vous laisse mon code, si vous pouviez me dire ce qui cloche.
Un grand merci par avance.
[code:1]
# Read CSV file
$Importgroup = import-csv -Path D:\RU_DG_List.csv -OutVariable string
# File reading loop
foreach ($Records in $Importgroup)
{
$GroupName = $Records.Group.Name
$Description = $Records.Description
$Email = $Records.Email
# LDAP Connection
$objOU = [ADSI]\"LDAP://monserveur:389/ou=Test_DG,dc=siege,dc=site,dc=ru\"
# Group creation
$objGroupe = $objOU.Create( \"group\",\"CN=$GroupName\"«»)
# Change and set attributes
# Set GroupType (Distribution = 2, \"Security\" by default if not specified)
$objGroupe.Put(\"sAMAccountName\",$GroupName)
$objGroupe.Put(\"groupType\", 2)
$objGroupe.Put(\"Description\",$Description)
$objGroupe.Put(\"Mail\",$Email)
$objGroupe.SetInfo()
# To display the name of the distribution group which is being created
write-output ([string]::Concat(\"Add group : \",$Records.GroupName,\" \", \"in :\",$Records.Description))
[/code:1]<br><br>Message édité par: Th0rS3lit3, à: 30/11/10 20:43
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Hors Ligne
- Administrateur
-
- Messages : 576
- Remerciements reçus 0
[code:1]
$GroupName = $Records.Group.Name
[/code:1]
Plus loin tu utilises $Records.GroupName, alors que là tu désignes $Records.Group.Name.
Connexion ou Créer un compte pour participer à la conversation.
- Sébastien Lozé
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 5
- Remerciements reçus 0
Merci de ta réponse, j'avais vu cette erreur que j'ai modifié après avoir posté. Pourtant toujours le même problème, idem avec les autres variables...
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
Juste quelques remarques au passage :
1. Où se ferme ton bloc de script du foreach ? Il manque l'accolade fermante.
2. Vérifie la structure de ton fichier CSV ? L'import se fait-il correctement ? Regarde surtout ton délimiteur de champs. Au besoin utilise le paramètre -Delimiter de la commandelette Import-CSV.
3. Supprime le point en trop évidemment dans : $Records.Group.Name
Arnaud
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- Sébastien Lozé
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 5
- Remerciements reçus 0
1. J'ai dorénavant fermé mon bloc foreach juste avant la connection LDAP
2. Mon fichier CSV est délimité par des virgules, quand je fait un simple import-csv \"nomdufichier\" la structure est correcte.
3. Point supprimé
J'arrive désormais à importer mes variables lors de la création d'un groupe, j'appelais la mauvaise variable.
$objGroupe.Put(\"Description\",$Description)
au lieu de
$objGroupe.Put(\"Description\",$Records.Description)
Cela fonctionne bien pour les champs \"Description\", \"Email\" mais pas pour le \"sAMAccountName\" et le \"CN=\" lors de la création du groupe.
Je vous remet le code. En tout cas merci beaucoup pour vos réponses.
$objGroupe = $objOU.Create( \"group\",\"cn=,$Records.Lvl1DG,\")
$objGroupe.Put(\"sAMAccountName\",$Records.GroupName)
Connexion ou Créer un compte pour participer à la conversation.
- Sébastien Lozé
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 5
- Remerciements reçus 0
Je vous met le code ça servira sûrement à d'autres
# Read CSV file
$Importgroup = import-csv -Path D:\DG_RU_List.csv -OutVariable string
# File reading loop
foreach ($Records in $Importgroup)
{
$Lvl1DG = $Records.Lvl1DG
$Lvl2DG = $Records.Lvl2DG
$Lvl3DG = $Records.Lvl3DG
$Email = $Records.Email
$Establishment = $Records.Establishment
# LDAP Connection
$objOU = [ADSI]\"LDAP://server:389/ou=Test,dc=test,dc=test,dc=ru\"
# Groups creation
$objGroupe = $objOU.Create( \"group\",\"cn=\"+ $Records.Lvl1DG)
# Change and set attributes
# Set GroupType (Distribution = 2, \"Security\" by default if not specified)
$objGroupe.Put(\"sAMAccountName\",\"DG_RU \"+ $Records.Lvl1DG)
$objGroupe.Put(\"groupType\", 2)
$objGroupe.Put(\"Description\",$Records.Lvl1DG+ \" Distribution Group\")
$objGroupe.Put(\"Mail\",$Records.Email)
$objGroupe.SetInfo()
# To display the name of the distribution group which is being created
write-output ([string]::Concat(\"Add group : \",$Records.Lvl1DG, \" member of : \" ,$Records.Lvl2DG, \" and : \",$Records.Lvl3DG))
}
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Creation de groupes de distribution depuis CSV