Question [Résolu] Suppression de ligne dans CSV

Plus d'informations
il y a 11 ans 2 mois #19259 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

En cours de découverte du GraalPowershell !

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

Plus d'informations
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

le script sera exécuté toutes les heures

si toutes les modification sont faite efface le fichier !

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.

Plus d'informations
il y a 11 ans 2 mois #19264 par zaerazerazer
6ratgus écrit:

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.

Plus d'informations
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 \&quot;c:\ordinateurs.csv\&quot; -Delimiter \&quot;`t\&quot;

#
# traitement
#

# a la fin du traitement j'enleve l'ordi du tableau
$ordinateurs = $ordinateurs | Where-Object { $_.ordinateur -ne \&quot;pc-test\&quot;}
# j'enregistre le tableau de suite
$ordinateurs | Export-Csv -Path \&quot;c:\ordinateurs.csv\&quot; -Delimiter \&quot;`t\&quot;
[/code:1]

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

Plus d'informations
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 = \&quot;\&quot;
$utilisateurs[0].prenom = \&quot;\&quot;
# tous les autres champs doivent être vidé
$utilisateurs[0] | Export-Csv -Path \&quot;c:\utilisateurs.csv\&quot; -Delimiter \&quot;`t\&quot;
[/code:1]

les solutions manque pas

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

Plus d'informations
il y a 11 ans 2 mois #19273 par zaerazerazer
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 \&quot;C:chemi,.csv\&quot; -Delimiter \&quot;;\&quot;

foreach($users in $configs)
{
$nouveauService = $users.service
$nouveauLieu = $users.lieu
$dateSupprListeString = $users.date
$nomModele = \&quot;$service\&quot; + \&quot;_\&quot; + \&quot;$lieu\&quot;
$DateDuJour = get-date -format \&quot;dd/MM/yyyy\&quot;
$mail = $users.mail

echo \&quot;mail: $mail\&quot;

$utilisateurs = Get-ADUser -filter * -properties * | Where-Object {$_.userPrincipalName -like \&quot;$mail\&quot;}

foreach($utilisateur in $utilisateurs)
{
$sama = $utilisateur.sAMAccountName

echo \&quot;sama : $sama\&quot;

#on supprime le lieu, le service et la date de modification de la personne

Set-ADUser $sama -Clear \&quot;extensionattribute1\&quot;
Set-ADUser $sama -Clear \&quot;extensionattribute2\&quot;
Set-ADUser $sama -Clear \&quot;extensionattribute3\&quot;

#on ajoute le nouveau lieu; service et date de modification

Set-ADUser $sama -add @{\&quot;extensionattribute1\&quot;=\&quot;$nouveauService\&quot;}
Set-ADUser $sama -add @{\&quot;extensionattribute2\&quot;=\&quot;$nouveauLieu\&quot;}
Set-ADUser $sama -add @{\&quot;extensionattribute3\&quot;=\&quot;$dateSupprListeString\&quot;}

# On déplace l'utilisateur dans l'OU = A_modifier

Get-ADUser $sama | Move-ADObject -TargetPath \&quot;OU=A_MODIFIER,OU=ou,DC=domain,DC=test\&quot;
}

#on vide le CSV

$configs = $configs | Where-Object { $_.mail -ne \&quot;$mail\&quot;}
$configs | Export-Csv -Path \&quot;C:chemin.csv\&quot; -Delimiter \&quot;;\&quot;
}
[/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 &lt;&lt;&lt;&lt; -Path \&quot;C:chemin.csv\&quot; -Delimiter \&quot;;\&quot;
+ 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.040 secondes
Propulsé par Kunena