Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1673 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Script powershell et fichier CSV

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Script powershell et fichier CSV

n°2250565
big_rems
Posté le 11-02-2015 à 09:51:42  profilanswer
 

Bonjour, Bonjour ! :)  
 
Je travail actuellement sur un script powershell pour mon entreprise.
 
Le but du script est d'ajouter/supprimer ou modifier des comptes AD à l'aide d'un fichier .CSV qui contient des informations.
 
Le script doit permettre de différencier l'action ajouter/supprimer ou modifier grâce à la première lettre de chaque ligne du fichier .CSV qui sera soit un A pour ajouter, soit un S pour supprimer soit un M pour modifier.
 
Voici a quoi ressemble le contenu du fichier test.CSV :
 
lettre;Description;Surname;GivenName;Displayname;AccountExpirationDate;Name;Password;
A;1264684;CATHELAINE;roger;18/10/1960;03/05/2015;L008922;78901940;
S;45634646;NICOLE;florent;17/07/1976;15/03/2014;L001204;45671966;
M;25326341;MEHMACHE;Leila;07/06/1966;26/11/2015;L004505;12361956;
 
On peut voir que les informations son séparés par des ";" et placés de façon à être récupérés par colonne grâce aux attribut AD de la première ligne :
 
lettre;Description;Surname;GivenName;Displayname;AccountExpirationDate;Name;Password;
 
 
 
Et voici la partie de mon script qui pose problème :
 
 
$lettre=$lettre.lettre #Attribut permettant de déclaré que le mot "lettre" du fichier .CSV correspond a la variable $lettre
$x = get-content "C:\test.csv" #récupération du fichier .CSV dans l variable $x
 
 
 
$x[1..$x.count] | foreach-object {$lettre.lettre -cmatch "S" -in $x} |  out-file "C:\test10.csv"  
 
#Ci dessus la partie qui ne fonctionne pas  :??:  
 
Je m'explique, le but étant de différencier les actions en fonction de la première lettre de chaque ligne, j'ai donc imaginer qu'il fallait utiliser la variable $lettre qui contiendrai alors la première lettre de chaque ligne. Pour cela j'ai utilisé une logique semblable à celle utilisé avec les attribut AD, c'est à dire : -Name $Name.name  mais sous la forme $lettre.lettre de manière à récupéré les lettres présentes dans la colonne  "lettre" le lettre se comporterai comme un attribut. Et cela ne fonctionne pas.
 
Pour info, voici la boucle pour le reste de mon script ;  
 
$Users=import-csv -delimiter ";" -Path "C:\test0.csv"
 
foreach ($lettre in $Users){
if ($lettre -match "M" ){
foreach ($User in $Users){
Set-ADUser -Name $User.Name -Description $User.Description -Surname $User.Surname -GivenName $User.GivenName -Displayname $User.Displayname -AccountExpirationDate $User.AccountExpirationDate -Path "OU=test,DC=MED,DC=FR"
#Add-ADGroupMember -Identity "utilisateur de la med" -Members $User.SamAccountName
}}
}
 
if ($lettre -match "S" ){
foreach ($User in $Users){
Remove-ADUser -Name $User.Name -Description $User.Description -Surname $User.Surname -GivenName $User.GivenName -Displayname $User.Displayname -AccountExpirationDate $User.AccountExpirationDate -Path "OU=test,DC=MED,DC=FR"
#Add-ADGroupMember -Identity "utilisateur de la med" -Members $User.SamAccountName
}}
 
 
if ($lettre -match "A" ){
foreach ($User in $Users){
New-ADUser -Name $User.Name -Description $User.Description -Surname $User.Surname -GivenName $User.GivenName -Displayname $User.Displayname -AccountExpirationDate $User.AccountExpirationDate -Path "OU=test,DC=MED,DC=FR"
#Add-ADGroupMember -Identity "utilisateur de la med" -Members $User.SamAccountName
}}
}
 
 
Pouvez-vous m'aider? Merci d'avance !  :)

mood
Publicité
Posté le 11-02-2015 à 09:51:42  profilanswer
 

n°2263945
misato
Clavicula Nox
Posté le 05-08-2015 à 12:22:54  profilanswer
 

je sais pas trpo, mais déjà le $lettre = $lettre.lettre, tu perds ta variable là ... si tu avais une collection avec différents champs, tu te retrouves avec un char ou une string de longueur 1, si ça fais bien ce que tu veux ... tu devrais peut-etre tenter de renommer une des 2 variables ... style $action plustot que $lettre :??:
donc faire en sorte que ta variable avec A S ou M soit "$action", et ton champs soit $lettre.action par exemple :o


Message édité par misato le 05-08-2015 à 12:23:49

---------------
shibboleet ! - HADOPI vous a plu ? Vous allez adorer la LOPPSI ! - generation NT bande de criminels inconscients !

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Script powershell et fichier CSV

 

Sujets relatifs
fichier CSV et retour a la ligne intempestifAide:extraire un groupe de données depuis un groupe de fichiers
[JAVA] Parser un fichier de log sans le lockerDéplacement fichier
Suppression de fichierouvrir un fichier texte en java
Traiter un fichier xmlSuppression d'un fichier en lecture seule
Importer valeurs depuis un fichier texte dans des variables VBS 
Plus de sujets relatifs à : Script powershell et fichier CSV


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR