Question
[Résolu] Suppression de ligne dans CSV
- zaerazerazer
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 49
- Remerciements reçus 0
il y a 11 ans 2 mois #19259
par zaerazerazer
En cours de découverte du GraalPowershell !
[Résolu] Suppression de ligne dans CSV a été créé par zaerazerazer
bonjour,
J'exploite actuellement un csv pour modifier des comptes de l'AD. Mais le soucis que je rencontre, c'est que j'ai besoin qu'à chaque fois que l'on a lu une ligne donc récupéré les valeurs, on l'a supprime car le script sera exécuté toutes les heures et ca éviterais de modifier plusieurs fois le même compte.
J'ai recherché sur le net comment faire mais ne trouve pas d'exemple concret :/
Avez-vous des pistes de solutions ?<br><br>Message édité par: Tibo54, à: 17/03/15 15:19
J'exploite actuellement un csv pour modifier des comptes de l'AD. Mais le soucis que je rencontre, c'est que j'ai besoin qu'à chaque fois que l'on a lu une ligne donc récupéré les valeurs, on l'a supprime car le script sera exécuté toutes les heures et ca éviterais de modifier plusieurs fois le même compte.
J'ai recherché sur le net comment faire mais ne trouve pas d'exemple concret :/
Avez-vous des pistes de solutions ?<br><br>Message édité par: Tibo54, à: 17/03/15 15:19
En cours de découverte du GraalPowershell !
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 11 ans 2 mois #19263
par Philippe
Réponse de Philippe sur le sujet Re:Suppression de ligne dans CSV
salut Tibo54
ou remplace le par un fichier sans utilisateur (que l'en-tête)
sinon si tu garde ton idée première puisque tu a fais un import-csv tu efface chaque élément de de ton tableau et tu écrit le fichier mais tu va finir par un conflit possible avec le remplissage du fichier !
si toutes les modification sont faite efface le fichier !le script sera exécuté toutes les heures
ou remplace le par un fichier sans utilisateur (que l'en-tête)
sinon si tu garde ton idée première puisque tu a fais un import-csv tu efface chaque élément de de ton tableau et tu écrit le fichier mais tu va finir par un conflit possible avec le remplissage du fichier !
Connexion ou Créer un compte pour participer à la conversation.
- zaerazerazer
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 49
- Remerciements reçus 0
il y a 11 ans 2 mois #19264
par zaerazerazer
En cours de découverte du GraalPowershell !
Réponse de zaerazerazer sur le sujet Re:Suppression de ligne dans CSV
6ratgus écrit:
Je ne pense pas que j'aurais de conflit avec le remplissage étant donné que le fichier sera remplis par un technicien manuellement.
Justement, l'idéal est qu'il remplisse l'user a modifier, ferme le fichier et quand il a besoin d'en modifié un autre qu'il réouvre le fichier mais qu'il n'y reste que l'en-tête !
sinon si tu garde ton idée première puisque tu a fais un import-csv tu efface chaque élément de de ton tableau et tu écrit le fichier mais tu va finir par un conflit possible avec le remplissage du fichier !
Je ne pense pas que j'aurais de conflit avec le remplissage étant donné que le fichier sera remplis par un technicien manuellement.
Justement, l'idéal est qu'il remplisse l'user a modifier, ferme le fichier et quand il a besoin d'en modifié un autre qu'il réouvre le fichier mais qu'il n'y reste que l'en-tête !
En cours de découverte du GraalPowershell !
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 11 ans 2 mois #19269
par Philippe
Réponse de Philippe sur le sujet Re:Suppression de ligne dans CSV
une solution
[code:1]
# lis le fichier
$ordinateurs = Import-Csv -Path \"c:\ordinateurs.csv\" -Delimiter \"`t\"
#
# traitement
#
# a la fin du traitement j'enleve l'ordi du tableau
$ordinateurs = $ordinateurs | Where-Object { $_.ordinateur -ne \"pc-test\"}
# j'enregistre le tableau de suite
$ordinateurs | Export-Csv -Path \"c:\ordinateurs.csv\" -Delimiter \"`t\"
[/code:1]
[code:1]
# lis le fichier
$ordinateurs = Import-Csv -Path \"c:\ordinateurs.csv\" -Delimiter \"`t\"
#
# traitement
#
# a la fin du traitement j'enleve l'ordi du tableau
$ordinateurs = $ordinateurs | Where-Object { $_.ordinateur -ne \"pc-test\"}
# j'enregistre le tableau de suite
$ordinateurs | Export-Csv -Path \"c:\ordinateurs.csv\" -Delimiter \"`t\"
[/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 11 ans 2 mois #19270
par Philippe
Réponse de Philippe sur le sujet Re:Suppression de ligne dans CSV
une autre solution
en fin de script :
[code:1]
$utilisateurs[0].nom = \"\"
$utilisateurs[0].prenom = \"\"
# tous les autres champs doivent être vidé
$utilisateurs[0] | Export-Csv -Path \"c:\utilisateurs.csv\" -Delimiter \"`t\"
[/code:1]
les solutions manque pas
en fin de script :
[code:1]
$utilisateurs[0].nom = \"\"
$utilisateurs[0].prenom = \"\"
# tous les autres champs doivent être vidé
$utilisateurs[0] | Export-Csv -Path \"c:\utilisateurs.csv\" -Delimiter \"`t\"
[/code:1]
les solutions manque pas
Connexion ou Créer un compte pour participer à la conversation.
- zaerazerazer
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 49
- Remerciements reçus 0
il y a 11 ans 2 mois #19273
par zaerazerazer
En cours de découverte du GraalPowershell !
Réponse de zaerazerazer sur le sujet Re:Suppression de ligne dans CSV
Je ne comprend pas les réponses que tu m'as donné,
dans la premiere tu sélectionne ce qui est différent de pc_test ?
et ensuite tu écrase le CSV avec le noueau qui contient moins de ligne ?
j'ai éssayé de l'dapter dans mon code mais il me dit que $configs est $null et ca me supprime tout le CSV y compris l'en-tête.
[code:1]
Import-Module ActiveDirectory
$configs = Import-Csv -Path \"C:chemi,.csv\" -Delimiter \";\"
foreach($users in $configs)
{
$nouveauService = $users.service
$nouveauLieu = $users.lieu
$dateSupprListeString = $users.date
$nomModele = \"$service\" + \"_\" + \"$lieu\"
$DateDuJour = get-date -format \"dd/MM/yyyy\"
$mail = $users.mail
echo \"mail: $mail\"
$utilisateurs = Get-ADUser -filter * -properties * | Where-Object {$_.userPrincipalName -like \"$mail\"}
foreach($utilisateur in $utilisateurs)
{
$sama = $utilisateur.sAMAccountName
echo \"sama : $sama\"
#on supprime le lieu, le service et la date de modification de la personne
Set-ADUser $sama -Clear \"extensionattribute1\"
Set-ADUser $sama -Clear \"extensionattribute2\"
Set-ADUser $sama -Clear \"extensionattribute3\"
#on ajoute le nouveau lieu; service et date de modification
Set-ADUser $sama -add @{\"extensionattribute1\"=\"$nouveauService\"}
Set-ADUser $sama -add @{\"extensionattribute2\"=\"$nouveauLieu\"}
Set-ADUser $sama -add @{\"extensionattribute3\"=\"$dateSupprListeString\"}
# On déplace l'utilisateur dans l'OU = A_modifier
Get-ADUser $sama | Move-ADObject -TargetPath \"OU=A_MODIFIER,OU=ou,DC=domain,DC=test\"
}
#on vide le CSV
$configs = $configs | Where-Object { $_.mail -ne \"$mail\"}
$configs | Export-Csv -Path \"C:chemin.csv\" -Delimiter \";\"
}
[/code:1]
[code:1]
Export-Csv : Impossible de lier l'argument au paramètre « InputObject », car il a la valeur Null.
Au niveau de C:\chemin.ps1 : 44 Caractère : 23
+ $configs | Export-Csv <<<< -Path \"C:chemin.csv\" -Delimiter \";\"
+ CategoryInfo : InvalidData: (:«») [Export-Csv], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.ExportCsvCo
mmand
[/code:1]<br><br>Message édité par: Tibo54, à: 17/03/15 09:24
dans la premiere tu sélectionne ce qui est différent de pc_test ?
et ensuite tu écrase le CSV avec le noueau qui contient moins de ligne ?
j'ai éssayé de l'dapter dans mon code mais il me dit que $configs est $null et ca me supprime tout le CSV y compris l'en-tête.
[code:1]
Import-Module ActiveDirectory
$configs = Import-Csv -Path \"C:chemi,.csv\" -Delimiter \";\"
foreach($users in $configs)
{
$nouveauService = $users.service
$nouveauLieu = $users.lieu
$dateSupprListeString = $users.date
$nomModele = \"$service\" + \"_\" + \"$lieu\"
$DateDuJour = get-date -format \"dd/MM/yyyy\"
$mail = $users.mail
echo \"mail: $mail\"
$utilisateurs = Get-ADUser -filter * -properties * | Where-Object {$_.userPrincipalName -like \"$mail\"}
foreach($utilisateur in $utilisateurs)
{
$sama = $utilisateur.sAMAccountName
echo \"sama : $sama\"
#on supprime le lieu, le service et la date de modification de la personne
Set-ADUser $sama -Clear \"extensionattribute1\"
Set-ADUser $sama -Clear \"extensionattribute2\"
Set-ADUser $sama -Clear \"extensionattribute3\"
#on ajoute le nouveau lieu; service et date de modification
Set-ADUser $sama -add @{\"extensionattribute1\"=\"$nouveauService\"}
Set-ADUser $sama -add @{\"extensionattribute2\"=\"$nouveauLieu\"}
Set-ADUser $sama -add @{\"extensionattribute3\"=\"$dateSupprListeString\"}
# On déplace l'utilisateur dans l'OU = A_modifier
Get-ADUser $sama | Move-ADObject -TargetPath \"OU=A_MODIFIER,OU=ou,DC=domain,DC=test\"
}
#on vide le CSV
$configs = $configs | Where-Object { $_.mail -ne \"$mail\"}
$configs | Export-Csv -Path \"C:chemin.csv\" -Delimiter \";\"
}
[/code:1]
[code:1]
Export-Csv : Impossible de lier l'argument au paramètre « InputObject », car il a la valeur Null.
Au niveau de C:\chemin.ps1 : 44 Caractère : 23
+ $configs | Export-Csv <<<< -Path \"C:chemin.csv\" -Delimiter \";\"
+ CategoryInfo : InvalidData: (:«») [Export-Csv], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.ExportCsvCo
mmand
[/code:1]<br><br>Message édité par: Tibo54, à: 17/03/15 09:24
En cours de découverte du GraalPowershell !
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.041 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [Résolu] Suppression de ligne dans CSV