Question Vérifier nom, prénom à partir d'un CSV avant Impor

Plus d'informations
il y a 5 ans 9 mois #25681 par MARTY
Bonjour à tous,

Je débute dans le monde du Powershell et je me tape la tete dessus depuis plusieurs jours.
Je viens donc vous demander de l'aide une fois avoir parcouru une bonne partie du site.

A partir d'un CSV je souhaiterais l'importer dans l'ad dans les champs pager et otherpager. (cela fonctionne)

Néanmoins, je dois regarder si les users de mon csv corresponds à mes users de mon AD. Si tel est le cas, on modifie les champs décrit plus haut.

CSV = Nom;Prenom;Pager;OtherPager (Je n'ai pas le Samaccountname sinon ça serait trop bien) Le CSV, proviens d'une extraction de base donc impossible d'avoir d'avantage de donnée.

Sachant que dans le CSV, des collaborateurs n'ont pas de compte AD. Si tel est le cas, faire une liste. (Je dois allez plus loin mais on verra dans un second temps)

Merci à tous pour votre aide.

Merci

[code:1]
Import-Module activedirectory
#Import du fichier CSV
Import-Csv -path C:\Badge-imprimante\BaseOK.csv -delimiter \";\" |
ForEach-Object {
Set-ADUser -Identity $_.Nom -Replace @{Pager=$_.pager}
Set-ADUser -Identity $_.Nom -Replace @{OtherPager=$_.OtherPager}
}
#Boucle qui modifie le champ Pager et OtherPager (Radiomessageire dans l'AD)
[/code:1]<br><br>Message édité par: Tanguy, à: 28/06/18 14:07
Pièces jointes :

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

Plus d'informations
il y a 5 ans 8 mois #25684 par NicolasBdn
Bonjour Tanguy,


Tout d'abord, bienvenue dans le joyeux monde de PowerShell.

TU es sûr de ne pas avoir de SamAccountName ?
Lorsque tu utilise le paramètre Identity avec Set-AD User, celui-ci ne peut recevoir que certaines valeurs :

-Identity&lt;ADUser&gt;
Specifies an Active Directory user object by providing one of the following property values. The identifier in parentheses is the LDAP display name for the attribute. Les valeurs acceptables pour ce paramètre sont :

-- A distinguished name
-- A GUID (objectGUID)
-- A security identifier (objectSid)
-- A SAM account name (sAMAccountName)


Pour tester la présence d'un utilisateur, tu peux utiliser la commande Get-ADUser à l'intérieur de ta boucle Foreach-Object. Mettre le résultat dans une variable, et tester la variable avec une condition if. Si la variable est vide = Pas d'utilisateur. Sinon tu utilises ton Set-ADUser. Tu vois ce que je veux dire ?

Petit exemple :
[code:1]
$Var = $null
if ($var){
'Ma variable n'est pas nulle.'
}Else{
'Ma variable est nulle'
}
[/code:1]


En espérant que cela t'aide.


NicolasB

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

Plus d'informations
il y a 5 ans 8 mois #25690 par Arnaud Petitjean
Bonjour Tanguy,

Comme le souligne Nicolas, sans SamAccountName tu vas vraiment galérer. A moins que tu sois capable de le générer à partir du nom et du prénom de l'utilisateur...

Quand tu utilises la syntaxe suivante

[code:1]
Set-ADUser -Identity $_.Nom ...
[/code:1]

PowerShell va tenter d'associer $_.Nom à l'attribut SamAccountName.

Sinon tu peux essayer ceci :

[code:1]
... | Foreach {
Get-ADUSer -Filter { name -eq $_.Nom } | Set-ADUser -Replace @{Pager=$_.pager}
}

Avec cette technique tu es sûr de faire matcher le bon attribut. Cependant gare aux homonymes ! C'est pour cela que le SamAccountName est intéressant (ou un numéro d'employé).

Arnaud
[/code:1]

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 5 ans 8 mois #25694 par MARTY
Bonjour,

Meric à tous les 2.
D'une part soit, je test mes colonne Nom et prénom et je les compare aux surname et givenname de l'AD. Si la condition est vrai, alors je modifie sinon je met la ligne dans un fichier.

Sinon je peux créer 2 colonnes en concaténant à partir du nom et prénom. (Notre SamAccountName est soit le nom de la personne soit, si homonyme \&quot;nom\&quot; \&quot;_\&quot; \&quot;1ere lettre du prénom\&quot; EX : DUPONT_T)
A partir de là, il faut que je vérifie une colonne après l'autre et la comparer au SamAccountName.

J'ai c'est 2 possibilités là. La première étant la mieux pour moi pour automatiser au mieux ce script.

Pouvez vous m'aider sur ce point, sinon j'essaye d’intégrer ce que vous m'avez écrit.

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

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