Question Creation de groupes de distribution depuis CSV

Plus d'informations
il y a 15 ans 3 mois #8164 par Sébastien Lozé
Bonjour à tous,

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.

Plus d'informations
il y a 15 ans 3 mois #8165 par Jacques Barathon
Il n'y aurait pas un point en trop entre Group et Name dans la ligne où tu affectes le contenu à la variable $groupname ?

[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.

Plus d'informations
il y a 15 ans 3 mois #8166 par Sébastien Lozé
Bonjour Janel,

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.

Plus d'informations
il y a 15 ans 3 mois #8167 par Arnaud Petitjean
Salut,

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.

Plus d'informations
il y a 15 ans 3 mois #8169 par Sébastien Lozé
Salut Arnaud,

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 \&quot;nomdufichier\&quot; 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(\&quot;Description\&quot;,$Description)
au lieu de
$objGroupe.Put(\&quot;Description\&quot;,$Records.Description)

Cela fonctionne bien pour les champs \&quot;Description\&quot;, \&quot;Email\&quot; mais pas pour le \&quot;sAMAccountName\&quot; et le \&quot;CN=\&quot; lors de la création du groupe.

Je vous remet le code. En tout cas merci beaucoup pour vos réponses.

$objGroupe = $objOU.Create( \&quot;group\&quot;,\&quot;cn=,$Records.Lvl1DG,\&quot;)

$objGroupe.Put(\&quot;sAMAccountName\&quot;,$Records.GroupName)

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 3 mois #8170 par Sébastien Lozé
Ca y est ça fonctionne ! :laugh:

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]\&quot;LDAP://server:389/ou=Test,dc=test,dc=test,dc=ru\&quot;

# Groups creation
$objGroupe = $objOU.Create( \&quot;group\&quot;,\&quot;cn=\&quot;+ $Records.Lvl1DG)

# Change and set attributes
# Set GroupType (Distribution = 2, \&quot;Security\&quot; by default if not specified)
$objGroupe.Put(\&quot;sAMAccountName\&quot;,\&quot;DG_RU \&quot;+ $Records.Lvl1DG)
$objGroupe.Put(\&quot;groupType\&quot;, 2)
$objGroupe.Put(\&quot;Description\&quot;,$Records.Lvl1DG+ \&quot; Distribution Group\&quot;)
$objGroupe.Put(\&quot;Mail\&quot;,$Records.Email)
$objGroupe.SetInfo()

# To display the name of the distribution group which is being created
write-output ([string]::Concat(\&quot;Add group : \&quot;,$Records.Lvl1DG, \&quot; member of : \&quot; ,$Records.Lvl2DG, \&quot; and : \&quot;,$Records.Lvl3DG))
}

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.074 secondes
Propulsé par Kunena