Question maj d'un enregistrement dans un fichier csv

Plus d'informations
il y a 11 ans 4 mois #18413 par david lernould
bonjour,

dans le cadre de l'utilisation d'un fichier dictionnaire au format csv , apres avoir recuperé une valeur dans ce fichier (colonne correspondant au chemin du fichier log a controler) via un import-csv j'ai besoins de modifier un enregistement sur la meme ligne pour la colonne suivante (correspondant au numéro de ligne du fichier log).
comment faire pour modifier uniquement cet enregistrement numero de ligne sans effectuer une boucle for-each ?

merci :side:

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

Plus d'informations
il y a 11 ans 4 mois #18415 par Laurent Dardenne
Salut,
je ne suis pas certains d'avoir compris( pas d'exemple), mais le terme dictionnaire laisse penser qu'une structure de donnée de type hashtable peut être une solution.
Import-csv crée un tableau, si tes clés sont uniques il te reste à le transformer.

Tutoriels PowerShell

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

Plus d'informations
il y a 11 ans 4 mois #18418 par david lernould
pour explicité ma demande :
fichier csv :
code appli;chemin du fichier log;libelle application;derniere ligne traité par le programme;
dans mon fichier j'ai une vingtaine de ligne (une par appli)
donc après avoir trouvé le code appli dans le fichier je voudrais mettre à jour la colonne derniere ligne traité par le programme.

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

Plus d'informations
il y a 11 ans 4 mois #18420 par Laurent Dardenne
Essaie ceci :
[code:1]
Function New-HashTable {
#From blogs.msdn.com/b/powershell/archive/2007...7/new-hashtable.aspx
# Author: laurent Dardenne (ajout $Value)
# Version: 0.2
# Author: Jeffrey Snover
# Version: 0.1
#Requires -Version 1.0
param(
$Key=$(Throw \"USAGE: New-HashTable -Key <property>\"«»),
$Value,
[Switch]$NoOverWrite,
[Switch]$MakeArray
)
Begin
{
$hash = @{}
}
Process
{
#On définit la clé
$Property = $_.$key

#On définit la valeur de la clé à partir
# du nom de propriété contenue dans $Value
if ([String]::IsNullOrEmpty($Value))
{ $Object=$_
}else
{ $Object=$_.$Value
}

#Pas d'écrasement de la clé si elle existe
if ($NoOverWrite -And $hash.$Property)
{ Write-Error \"$Property already exists\"
}elseif ($MakeArray) #Il existe plusieurs occurences d'une même clé,
{ # on crée un tableau afin de mémoriser toutes les valeurs
if (!$hash.$Property)
{ $hash.$Property = new-object System.Collections.ArrayList
}
[void]$hash.$Property.Add($Object)
}else
{ #Il n'existe qu'une occurence d'une clé
#On la remplace si elle existe.
$hash.$Property = $Object
}
}
End
{
$hash
}
}#New-HashTable

$Datas=@(
New-object PSObject -Property @{
CodeAppli=1;
CheminDuFichierLog='c:\1';
LibelleApplication='Appli 1';
DerniereLigne='last Appli 1';
};
New-object PSObject -Property @{
CodeAppli=2;
CheminDuFichierLog='c:\2';
LibelleApplication='Appli 2';
DerniereLigne='last Appli 2';
};
New-object PSObject -Property @{
CodeAppli=3;
CheminDuFichierLog='c:\3';
LibelleApplication='Appli 3';
DerniereLigne='last Appli 3';
})

$datas|export-csv c:\temp\datas.csv -Delimiter ';'
$Apps=Import-csv c:\temp\datas.csv -Delimiter ';'|
New-HashTable -key \"CodeAppli\"

$Apps.\"1\"
$Apps.\"1\".DerniereLigne
[/code:1]
Et comme tu le constates, l'itération persiste.

Tutoriels PowerShell

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

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