Question
Script import utilisateur dans Active Directory
- Xadout
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 4
- Remerciements reçus 0
il y a 8 ans 4 mois #24463
par Xadout
Script import utilisateur dans Active Directory a été créé par Xadout
Bonjour à Tous,
Je suis novice sous powershell et suis confronté à une erreur surement idiote maais que je ne comprends pas.
Mon but à terme est de créer ou modifier des comptes utilisateurs AD en fonction d'un fichier csv.
Pour commencer je test déjà l'ajout d'un utilisateur sans aucun test dans une OU de test
Voici mon code :
[code:1]import-module activedirectory
# Importation des utilisateurs depuis le fichier CSV specifie
$users = import-csv -path \"\\SRV\PARTAGE\exporttest.csv\" -delimiter \";\" -Header Matricule,Nom,Prenom,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,Fonctions,23,24,25,26,27,28,Sortie,30,31,32,33,34,35,Id,Email,Tfixe,Tportable,Fax,41,42,Etablissement
foreach ($user in $users) {
$pass= '@loHA13'
$EmployeID= $user.Matricule
$nom= $user.Nom
$prenom= $user.Prenom
$NomPrenom= $prenom + ' ' + $nom
$Logon= $Identifiant + '@' + $dnsroot
$fonctions= $user.Fonctions
$sortie=$user.Sortie
$Identifiant= $user.Id
$mail= $user.Email
$tfixe= $user.Tfixe
$tportable= $user.Tportable
$fax= $user.Fax
$Etablissement= $user.Etablissement
$OU= 'OU=T06,OU=Utilisateurs,DC=DEDE,DC=LOCAL'
#Ajout des donnees dans la base Active Directory
New-ADuser -EmployeeID $EmployeID -SamAccountName $Identifiant -UserPrincipalName $Logon -Name $NomPrenom -Surname $nom -givenname $prenom -DisplayName $NomPrenom -EmailAddress $mail -OfficePhone $tfixe -MobilePhone $tportable -Fax $fax -ServicePrincipalNames $Etablissement -AccountPassword (convertto-securestring $pass -asplaintext -force) -ChangePasswordAtLogon $true -Enabled $true -Path $OU
}[/code:1]
L'import du csv se fait bien si j'affiche la variable $user, tous les paramètres snt importés mais j'ai ensuite une erreur :
New-ADuser : La référence de nom n’est pas valide
Au caractère D:\XX.ps1:23 : 3\"
Quelqu'un pourrait m'aiguiller???
Merci d'avance
Xavier
Je suis novice sous powershell et suis confronté à une erreur surement idiote maais que je ne comprends pas.
Mon but à terme est de créer ou modifier des comptes utilisateurs AD en fonction d'un fichier csv.
Pour commencer je test déjà l'ajout d'un utilisateur sans aucun test dans une OU de test
Voici mon code :
[code:1]import-module activedirectory
# Importation des utilisateurs depuis le fichier CSV specifie
$users = import-csv -path \"\\SRV\PARTAGE\exporttest.csv\" -delimiter \";\" -Header Matricule,Nom,Prenom,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,Fonctions,23,24,25,26,27,28,Sortie,30,31,32,33,34,35,Id,Email,Tfixe,Tportable,Fax,41,42,Etablissement
foreach ($user in $users) {
$pass= '@loHA13'
$EmployeID= $user.Matricule
$nom= $user.Nom
$prenom= $user.Prenom
$NomPrenom= $prenom + ' ' + $nom
$Logon= $Identifiant + '@' + $dnsroot
$fonctions= $user.Fonctions
$sortie=$user.Sortie
$Identifiant= $user.Id
$mail= $user.Email
$tfixe= $user.Tfixe
$tportable= $user.Tportable
$fax= $user.Fax
$Etablissement= $user.Etablissement
$OU= 'OU=T06,OU=Utilisateurs,DC=DEDE,DC=LOCAL'
#Ajout des donnees dans la base Active Directory
New-ADuser -EmployeeID $EmployeID -SamAccountName $Identifiant -UserPrincipalName $Logon -Name $NomPrenom -Surname $nom -givenname $prenom -DisplayName $NomPrenom -EmailAddress $mail -OfficePhone $tfixe -MobilePhone $tportable -Fax $fax -ServicePrincipalNames $Etablissement -AccountPassword (convertto-securestring $pass -asplaintext -force) -ChangePasswordAtLogon $true -Enabled $true -Path $OU
}[/code:1]
L'import du csv se fait bien si j'affiche la variable $user, tous les paramètres snt importés mais j'ai ensuite une erreur :
New-ADuser : La référence de nom n’est pas valide
Au caractère D:\XX.ps1:23 : 3\"
Quelqu'un pourrait m'aiguiller???
Merci d'avance
Xavier
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 8 ans 4 mois #24468
par Philippe
Réponse de Philippe sur le sujet Re:Script import utilisateur dans Active Directory
salut Xadout
le message d'erreur indique qu'il y a un information incorrect dans les paramètres donner a New-ADuser
si tu exécute ce script a les bonnes infos ? :
[code:1]import-module activedirectory
# Importation des utilisateurs depuis le fichier CSV specifie
$users = import-csv -path \"\\SRV\PARTAGE\exporttest.csv\" -delimiter \";\" -Header Matricule,Nom,Prenom,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,Fonctions,23,24,25,26,27,28,Sortie,30,31,32,33,34,35,Id,Email,Tfixe,Tportable,Fax,41,42,Etablissement
foreach ($user in $users) {
$pass= '@loHA13'
$EmployeID= $user.Matricule
$nom= $user.Nom
$prenom= $user.Prenom
$NomPrenom= $prenom + ' ' + $nom
$Logon= $Identifiant + '@' + $dnsroot
$fonctions= $user.Fonctions
$sortie=$user.Sortie
$Identifiant= $user.Id
$mail= $user.Email
$tfixe= $user.Tfixe
$tportable= $user.Tportable
$fax= $user.Fax
$Etablissement= $user.Etablissement
$OU= 'OU=T06,OU=Utilisateurs,DC=DEDE,DC=LOCAL'
write-host $pass
write-host $EmployeID
write-host $nom
write-host $prenom
write-host $NomPrenom
write-host $Logon
write-host $fonctions
write-host $sortie
write-host $Identifiant
write-host $mail
write-host $tfixe
write-host $tportable
write-host $fax
write-host $Etablissement
write-host $OU
}
[/code:1]<br><br>Message édité par: 6ratgus, à: 30/10/17 17:36
le message d'erreur indique qu'il y a un information incorrect dans les paramètres donner a New-ADuser
si tu exécute ce script a les bonnes infos ? :
[code:1]import-module activedirectory
# Importation des utilisateurs depuis le fichier CSV specifie
$users = import-csv -path \"\\SRV\PARTAGE\exporttest.csv\" -delimiter \";\" -Header Matricule,Nom,Prenom,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,Fonctions,23,24,25,26,27,28,Sortie,30,31,32,33,34,35,Id,Email,Tfixe,Tportable,Fax,41,42,Etablissement
foreach ($user in $users) {
$pass= '@loHA13'
$EmployeID= $user.Matricule
$nom= $user.Nom
$prenom= $user.Prenom
$NomPrenom= $prenom + ' ' + $nom
$Logon= $Identifiant + '@' + $dnsroot
$fonctions= $user.Fonctions
$sortie=$user.Sortie
$Identifiant= $user.Id
$mail= $user.Email
$tfixe= $user.Tfixe
$tportable= $user.Tportable
$fax= $user.Fax
$Etablissement= $user.Etablissement
$OU= 'OU=T06,OU=Utilisateurs,DC=DEDE,DC=LOCAL'
write-host $pass
write-host $EmployeID
write-host $nom
write-host $prenom
write-host $NomPrenom
write-host $Logon
write-host $fonctions
write-host $sortie
write-host $Identifiant
write-host $mail
write-host $tfixe
write-host $tportable
write-host $fax
write-host $Etablissement
write-host $OU
}
[/code:1]<br><br>Message édité par: 6ratgus, à: 30/10/17 17:36
Connexion ou Créer un compte pour participer à la conversation.
- Xadout
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 4
- Remerciements reçus 0
il y a 8 ans 4 mois #24473
par Xadout
Réponse de Xadout sur le sujet Re:Script import utilisateur dans Active Directory
Bonjour et Merci pour la réponse.
En m'y remettant hier après midi, j'ai réussi à faire fonctionner de cette façon
[code:1]import-module activedirectory
# Importation des utilisateurs depuis le fichier CSV specifie
$users = import-csv -path \"\\SRV\PARTAGE\exporttest.csv\" -delimiter \";\" -Header Matricule,Nom,Prenom,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,Fonctions,23,24,25,26,27,28,Sortie,30,31,32,33,34,35,Id,Email,Tfixe,Tportable,Fax,41,42,Etablissement
foreach ($user in $users) {
$pass= \"@sqfsef\"
$EmployeID= $user.Matricule
$nom= $user.Nom
$prenom= $user.Prenom
$PrenomNom= $prenom + ' ' + $nom
$Logon= $Identifiant + \"@XXX.local\"
$fonction= $user.Fonctions
$sortie=$user.Sortie
$Identifiant= $user.Id
$mail= $user.Email
$tfixe= $user.Tfixe
$tportable= $user.Tportable
$fax= $user.Fax
$Etablissement= $user.Etablissement
$OU= \"OU=T06,OU=Utilisateurs,DC=DEDE,DC=LOCAL\"
#Ajout des donnees dans la base Active Directory
new-ADUser -Name \"$prenom $nom\" -EmployeeID \"$EmployeID\" -GivenName \"$prenom\" -Surname \"$nom\" -UserPrincipalName \"$logon\" -Samaccountname \"$logon\" -displayname \"$prenom $nom\" -Title \"$fonction\" -EmailAddress \"$mail\" -OfficePhone \"$tfixe\" -MobilePhone \"tportable\" -Fax \"$fax\" -Office \"$Etablissement\" -AccountPassword (convertto-securestring $pass -asplaintext -force) -ChangePasswordAtLogon $true -Enabled $true -path $ou
}[/code:1]
J'ai réécris la formule et cela à fonctionné. Je pense que le problème venait de -Name que j'avais enlevé précédemment a cause d'une erreur surement mal comprise.
En m'y remettant hier après midi, j'ai réussi à faire fonctionner de cette façon
[code:1]import-module activedirectory
# Importation des utilisateurs depuis le fichier CSV specifie
$users = import-csv -path \"\\SRV\PARTAGE\exporttest.csv\" -delimiter \";\" -Header Matricule,Nom,Prenom,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,Fonctions,23,24,25,26,27,28,Sortie,30,31,32,33,34,35,Id,Email,Tfixe,Tportable,Fax,41,42,Etablissement
foreach ($user in $users) {
$pass= \"@sqfsef\"
$EmployeID= $user.Matricule
$nom= $user.Nom
$prenom= $user.Prenom
$PrenomNom= $prenom + ' ' + $nom
$Logon= $Identifiant + \"@XXX.local\"
$fonction= $user.Fonctions
$sortie=$user.Sortie
$Identifiant= $user.Id
$mail= $user.Email
$tfixe= $user.Tfixe
$tportable= $user.Tportable
$fax= $user.Fax
$Etablissement= $user.Etablissement
$OU= \"OU=T06,OU=Utilisateurs,DC=DEDE,DC=LOCAL\"
#Ajout des donnees dans la base Active Directory
new-ADUser -Name \"$prenom $nom\" -EmployeeID \"$EmployeID\" -GivenName \"$prenom\" -Surname \"$nom\" -UserPrincipalName \"$logon\" -Samaccountname \"$logon\" -displayname \"$prenom $nom\" -Title \"$fonction\" -EmailAddress \"$mail\" -OfficePhone \"$tfixe\" -MobilePhone \"tportable\" -Fax \"$fax\" -Office \"$Etablissement\" -AccountPassword (convertto-securestring $pass -asplaintext -force) -ChangePasswordAtLogon $true -Enabled $true -path $ou
}[/code:1]
J'ai réécris la formule et cela à fonctionné. Je pense que le problème venait de -Name que j'avais enlevé précédemment a cause d'une erreur surement mal comprise.
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 8 ans 4 mois #24474
par Philippe
Réponse de Philippe sur le sujet Re:Script import utilisateur dans Active Directory
super
je voulais te faire voir que la variable $dnsroot ne sembler pas initialisé mais tu a trouver avant !!
je voulais te faire voir que la variable $dnsroot ne sembler pas initialisé mais tu a trouver avant !!
Connexion ou Créer un compte pour participer à la conversation.
- Xadout
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 4
- Remerciements reçus 0
il y a 8 ans 4 mois #24477
par Xadout
Réponse de Xadout sur le sujet Re:Script import utilisateur dans Active Directory
Bonjour,
Je suis sur la suite du script qui doivent mettre à jour certains champs de l'AD en cas de changement.
Le script reconnait bien si un utilisateur existe ou non, cette partie fonctionne.
Mais par contre, ensuite je souhaite comparer chaque champs. S'il est différent je dois le modifier, sinon je passe au champs suivant.
Mais il modifie le champs même si celui-ci est identique et accessoirement ne veux pas de ma variable pour les téléphones portables...
[code:1]import-module activedirectory
# Importation des utilisateurs depuis le fichier CSV specifie
$users = import-csv -path \"\\SRV\PARTAGE\mariontest.csv\" -delimiter \";\" -Header Matricule,Nom,Prenom,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,Fonctions,23,24,25,26,27,28,Sortie,30,31,32,33,34,35,ID,Email,Tfixe,Tportable,Fax,41,42,Etablissement
#Pour chaque ligne du fichier csv
foreach ($user in $users) {
#Recupere les variables
$EmployeID= $user.Matricule
$Nom= $user.Nom
$Prenom= $user.Prenom
$fonction= $user.Fonctions
$Mail= $user.Email
$Tfixe= $user.Tfixe
$Tportable= $user.Tportable
$Fax= $user.Fax
$Etablissement= $user.Etablissement
$ID=$user.ID
$PrenomNom= $prenom + ' ' + $nom
$Logon= $ID + \"@XXX.local\"
# Cherche le logon dans l'AD
$LogonAD = Get-ADUser -filter { userPrincipalName -eq $Logon }
# Si Logon existe, compare chaque variable et met à jour si différent de la valeur dans l'AD
if ($LogonAD -ne $null) {
$EmployeIDAD = Get-ADUser -filter { EmployeeID -eq $EmployeID}
if ($EmployeIDAD -ne $EmployeID ) {
set-ADUser -Identity $ID -EmployeeID $EmployeID
$Export= \"$Identifiant $Nom $Prenom EmployeId_Modifie\" >> c:\temp\ScriptUser.csv
}
$NomAD = Get-ADUser -Filter {Surname -eq $Nom}
Write-host \"NomAD est $NomAD\"
if ($NomAD -ne $Nom ) {
set-ADUser -Identity $ID -Surname $Nom -DisplayName $PrenomNom
# Rename-ADObject -Identity $ID -NewName $PrenomNom
$Export= \"$Identifiant $Nom $Prenom NOM_Modifie\" >> c:\temp\ScriptUser.csv
}
$PrenomAD = Get-ADUser -Filter {givenName -eq $Prenom}
Write-Host \" PrenomAD est $PrenomAD\"
if ($PrenomAD -ne $Prenom ) {
set-ADUser -Identity $ID -GivenName $Prenom -DisplayName $PrenomNom
# Rename-ADObject -Identity $ID -NewName $PrenomNom
$Export= \"$Identifiant $Nom $Prenom PRENOM_Modifie\" >> c:\temp\ScriptUser.csv
}
$FonctionAD = Get-ADUser -Filter {Title -eq $Fonction}
if ($FonctionAD -ne $Fonction ) {
set-ADUser -Identity $ID -Title $Fonction
$Export= \"$Identifiant $Nom $Prenom FONCTION_Modifie\" >> c:\temp\ScriptUser.csv
}
$MailAD = Get-ADUser -Filter {EmailAddress -eq $Mail}
if ($MailAD -ne $Mail ) {
set-ADUser -Identity $ID -EmailAddress $mail
$Export= \"$Identifiant $Nom $Prenom EMAIL_Modifie\" >> c:\temp\ScriptUser.csv
}
$TfixeAD = Get-ADUser -Filter {OfficePhone -eq $Tfixe}
if ($TfixeAD -ne $Tfixe ) {
set-ADUser -Identity $ID -OfficePhone $Tfixe
$Export= \"$Identifiant $Nom $Prenom TFIXE_Modifie\" >> c:\temp\ScriptUser.csv
}
#$TportableAD = Get-ADUser -LDAPFilter \"(MobilePhone=$Tportable)\"
# if ($TportableAD -ne $Tportable ) {set-ADUser -Identity $OctimeWEB -MobilePhone $Tportable}
$FaxAD = Get-ADUser -Filter {Fax -eq $Fax}
if ($FaxAD -ne $Fax ) {
set-ADUser -Identity $ID -Fax $Fax
$Export= \"$Identifiant $Nom $Prenom FAX_Modifie\" >> c:\temp\ScriptUser.csv
}
$EtablissementAD = Get-ADUser -Filter {Office -eq $Etablissement}
if ($EtablissementAD -ne $Etablissement ) {
set-ADUser -Identity $ID -Office $Etablissement
$Export= \"$Identifiant $Nom $Prenom ETABLISSEMENT_Modifie\" >> c:\temp\ScriptUser.csv
}
}
Else { Write-Host \"pas trouvé\"}
}
[/code:1]
Je suis sur la suite du script qui doivent mettre à jour certains champs de l'AD en cas de changement.
Le script reconnait bien si un utilisateur existe ou non, cette partie fonctionne.
Mais par contre, ensuite je souhaite comparer chaque champs. S'il est différent je dois le modifier, sinon je passe au champs suivant.
Mais il modifie le champs même si celui-ci est identique et accessoirement ne veux pas de ma variable pour les téléphones portables...
[code:1]import-module activedirectory
# Importation des utilisateurs depuis le fichier CSV specifie
$users = import-csv -path \"\\SRV\PARTAGE\mariontest.csv\" -delimiter \";\" -Header Matricule,Nom,Prenom,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,Fonctions,23,24,25,26,27,28,Sortie,30,31,32,33,34,35,ID,Email,Tfixe,Tportable,Fax,41,42,Etablissement
#Pour chaque ligne du fichier csv
foreach ($user in $users) {
#Recupere les variables
$EmployeID= $user.Matricule
$Nom= $user.Nom
$Prenom= $user.Prenom
$fonction= $user.Fonctions
$Mail= $user.Email
$Tfixe= $user.Tfixe
$Tportable= $user.Tportable
$Fax= $user.Fax
$Etablissement= $user.Etablissement
$ID=$user.ID
$PrenomNom= $prenom + ' ' + $nom
$Logon= $ID + \"@XXX.local\"
# Cherche le logon dans l'AD
$LogonAD = Get-ADUser -filter { userPrincipalName -eq $Logon }
# Si Logon existe, compare chaque variable et met à jour si différent de la valeur dans l'AD
if ($LogonAD -ne $null) {
$EmployeIDAD = Get-ADUser -filter { EmployeeID -eq $EmployeID}
if ($EmployeIDAD -ne $EmployeID ) {
set-ADUser -Identity $ID -EmployeeID $EmployeID
$Export= \"$Identifiant $Nom $Prenom EmployeId_Modifie\" >> c:\temp\ScriptUser.csv
}
$NomAD = Get-ADUser -Filter {Surname -eq $Nom}
Write-host \"NomAD est $NomAD\"
if ($NomAD -ne $Nom ) {
set-ADUser -Identity $ID -Surname $Nom -DisplayName $PrenomNom
# Rename-ADObject -Identity $ID -NewName $PrenomNom
$Export= \"$Identifiant $Nom $Prenom NOM_Modifie\" >> c:\temp\ScriptUser.csv
}
$PrenomAD = Get-ADUser -Filter {givenName -eq $Prenom}
Write-Host \" PrenomAD est $PrenomAD\"
if ($PrenomAD -ne $Prenom ) {
set-ADUser -Identity $ID -GivenName $Prenom -DisplayName $PrenomNom
# Rename-ADObject -Identity $ID -NewName $PrenomNom
$Export= \"$Identifiant $Nom $Prenom PRENOM_Modifie\" >> c:\temp\ScriptUser.csv
}
$FonctionAD = Get-ADUser -Filter {Title -eq $Fonction}
if ($FonctionAD -ne $Fonction ) {
set-ADUser -Identity $ID -Title $Fonction
$Export= \"$Identifiant $Nom $Prenom FONCTION_Modifie\" >> c:\temp\ScriptUser.csv
}
$MailAD = Get-ADUser -Filter {EmailAddress -eq $Mail}
if ($MailAD -ne $Mail ) {
set-ADUser -Identity $ID -EmailAddress $mail
$Export= \"$Identifiant $Nom $Prenom EMAIL_Modifie\" >> c:\temp\ScriptUser.csv
}
$TfixeAD = Get-ADUser -Filter {OfficePhone -eq $Tfixe}
if ($TfixeAD -ne $Tfixe ) {
set-ADUser -Identity $ID -OfficePhone $Tfixe
$Export= \"$Identifiant $Nom $Prenom TFIXE_Modifie\" >> c:\temp\ScriptUser.csv
}
#$TportableAD = Get-ADUser -LDAPFilter \"(MobilePhone=$Tportable)\"
# if ($TportableAD -ne $Tportable ) {set-ADUser -Identity $OctimeWEB -MobilePhone $Tportable}
$FaxAD = Get-ADUser -Filter {Fax -eq $Fax}
if ($FaxAD -ne $Fax ) {
set-ADUser -Identity $ID -Fax $Fax
$Export= \"$Identifiant $Nom $Prenom FAX_Modifie\" >> c:\temp\ScriptUser.csv
}
$EtablissementAD = Get-ADUser -Filter {Office -eq $Etablissement}
if ($EtablissementAD -ne $Etablissement ) {
set-ADUser -Identity $ID -Office $Etablissement
$Export= \"$Identifiant $Nom $Prenom ETABLISSEMENT_Modifie\" >> c:\temp\ScriptUser.csv
}
}
Else { Write-Host \"pas trouvé\"}
}
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 8 ans 4 mois #24479
par Philippe

et aussi sur les objets !!!
dans l'AD tu a des utilisateurs entre autre
ok mais tu peut avoir plusieurs personnes avec le même prénom parfois même le nom
donc quand tu fais ça : Get-ADUser -Filter {givenName -eq $Prenom} tu peut faire le test d'exécuter que cette ligne
si $prenom contient \"Philippe\" par exemple,
get-aduser va te renvoyer la liste de tous les \"Philippe\" !! moi il m'en sort une quinzaine !!
sympas mais c'est pas ce que tu cherche, enfin je crois !!
il vaut mieux faire un filtre ... non pas de filtre car un filtre suppose plusieurs reponse possible !!
enfin je vais me contredire mais l'utilisation tu filtre évite la génération d'un message d'erreur si il ni a pas l'utilisateur demander !!
fais le avec ce code : Get-ADUser -Identity \"philippe\"
alors dans ton cas de figure c'est utile
donc un filtre mais une cherche sur un attribut unique exemple : userPrincipalName ou SamAccountName
ou dans ton cas l'EmployeeID est possible si chaque employer a un ID différent !!
maintenant le sujet sur get-aduser
get-ADUser te renvoie un objet avec les principaux attributs de l'AD pour le ou les utilisateurs recherchés !!
donc dans ton script les variables suivante contiennent exactement la même chose : $LogonAD, $EmployeIDAD, $NomAD, PrenomAD, $FonctionAD, $MailAD, $TfixeAD, $FaxAD, $EtablissementAD
toutes ces variables contient le même objet renvoyer par get-aduser
une seule variable te suffit !! par exemple $logonAD
je suppose que $ID contient le SamAccountName,
donc avec le code suivant ta pas besoin des autres get-aduser :
$LogonAD = Get-ADUser -filter {SamAccountName -eq $ID}
ou encore
$LogonAD = Get-ADUser -filter {userPrincipalName -eq $Logon}
bien pour finir, les variables objets,
je te fais au plus simple a toi de lire un documentation PowerShell pur plus d'explication :
Get-ADUser -Identity $Logon par exemple te renvoie les attributs AD suivant par défaut (ici avec leurs valeur dans l'ad) :
[code:1]
DistinguishedName : CN=Test,OU=OUdeTEST,DC=domaine,DC=lan
Enabled : False
GivenName : Wifi
Name : Testnom
ObjectClass : user
ObjectGUID : ace7bee9-7c94-4f0c-a5a9-908caae0b70e
SamAccountName : test
SID : S-1-5-21-631892985-3984632572-265091654-5240
Surname : Testeur
UserPrincipalName : Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.[/code:1]
dans ta variable $logonAD tu a donc ces attributs est tu peut y avoir accès de cette façons $logonAD.Name ou $Logon.UserPrincipalName
ceci esplique pourquoi tes if ne fonctionnent pas !
tu doit faire :
[code:1]if ($logonAD.Prenom -ne $Prenom ) [/code:1]
dernier détails :
comme tu a pu le voir plus haut, par defaut les attributs ad suivant ne sont pas renvoyer par get-duser :
EmployeeID, office, OfficePhone, fax, EmailAddress, Title
il te faut donc le précisé comme ceci :
[code:1]$logonAD = Get-ADUser -Identity $Logon -Properties EmployeeID, office, OfficePhone, fax, EmailAddress, Title[/code:1]
voila j'espère avoir été clair
en cas de doute fais des tests simple sans l'affectation a une variable pour vérifier si tu a bien a l'affichage le bon résultat voulue
et reviens nous voir si tu n'y arrive pas !!
Réponse de Philippe sur le sujet Re:Script import utilisateur dans Active Directory
sur ce point tu n'a pas mis de modification du portable dans ton script !!et accessoirement ne veux pas de ma variable pour les téléphones portables...
alors il te faut une petite formation sur l'AD et l'utilisation du module AD de PowerShellMais il modifie le champs même si celui-ci est identique
et aussi sur les objets !!!
dans l'AD tu a des utilisateurs entre autre
ok mais tu peut avoir plusieurs personnes avec le même prénom parfois même le nom
donc quand tu fais ça : Get-ADUser -Filter {givenName -eq $Prenom} tu peut faire le test d'exécuter que cette ligne
si $prenom contient \"Philippe\" par exemple,
get-aduser va te renvoyer la liste de tous les \"Philippe\" !! moi il m'en sort une quinzaine !!
sympas mais c'est pas ce que tu cherche, enfin je crois !!
il vaut mieux faire un filtre ... non pas de filtre car un filtre suppose plusieurs reponse possible !!
enfin je vais me contredire mais l'utilisation tu filtre évite la génération d'un message d'erreur si il ni a pas l'utilisateur demander !!
fais le avec ce code : Get-ADUser -Identity \"philippe\"
alors dans ton cas de figure c'est utile
donc un filtre mais une cherche sur un attribut unique exemple : userPrincipalName ou SamAccountName
ou dans ton cas l'EmployeeID est possible si chaque employer a un ID différent !!
maintenant le sujet sur get-aduser
get-ADUser te renvoie un objet avec les principaux attributs de l'AD pour le ou les utilisateurs recherchés !!
donc dans ton script les variables suivante contiennent exactement la même chose : $LogonAD, $EmployeIDAD, $NomAD, PrenomAD, $FonctionAD, $MailAD, $TfixeAD, $FaxAD, $EtablissementAD
toutes ces variables contient le même objet renvoyer par get-aduser
une seule variable te suffit !! par exemple $logonAD
je suppose que $ID contient le SamAccountName,
donc avec le code suivant ta pas besoin des autres get-aduser :
$LogonAD = Get-ADUser -filter {SamAccountName -eq $ID}
ou encore
$LogonAD = Get-ADUser -filter {userPrincipalName -eq $Logon}
bien pour finir, les variables objets,
je te fais au plus simple a toi de lire un documentation PowerShell pur plus d'explication :
Get-ADUser -Identity $Logon par exemple te renvoie les attributs AD suivant par défaut (ici avec leurs valeur dans l'ad) :
[code:1]
DistinguishedName : CN=Test,OU=OUdeTEST,DC=domaine,DC=lan
Enabled : False
GivenName : Wifi
Name : Testnom
ObjectClass : user
ObjectGUID : ace7bee9-7c94-4f0c-a5a9-908caae0b70e
SamAccountName : test
SID : S-1-5-21-631892985-3984632572-265091654-5240
Surname : Testeur
UserPrincipalName : Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.[/code:1]
dans ta variable $logonAD tu a donc ces attributs est tu peut y avoir accès de cette façons $logonAD.Name ou $Logon.UserPrincipalName
ceci esplique pourquoi tes if ne fonctionnent pas !
tu doit faire :
[code:1]if ($logonAD.Prenom -ne $Prenom ) [/code:1]
dernier détails :
comme tu a pu le voir plus haut, par defaut les attributs ad suivant ne sont pas renvoyer par get-duser :
EmployeeID, office, OfficePhone, fax, EmailAddress, Title
il te faut donc le précisé comme ceci :
[code:1]$logonAD = Get-ADUser -Identity $Logon -Properties EmployeeID, office, OfficePhone, fax, EmailAddress, Title[/code:1]
voila j'espère avoir été clair
en cas de doute fais des tests simple sans l'affectation a une variable pour vérifier si tu a bien a l'affichage le bon résultat voulue
et reviens nous voir si tu n'y arrive pas !!
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.056 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Script import utilisateur dans Active Directory