2014-05-08 5 views
1

J'ai un fichier CSV que je restructure à l'aide de PowerShell et je veux combiner des valeurs dans un certain nombre de champs dont le nom correspond à un caractère générique. Je choisissais déjà mes champs CSV que je les importer, alors voudrais utiliser quelque chose de semblable à ce qui suit:PowerShell - Combiner dynamiquement des colonnes CSV

$c4 = @{n="Grouped";e={$_.C1+$_.C2+$_.C3}} 

$csv = import-csv $incsv | select $c4 

Cela fonctionne, mais je suis en train de trouver un moyen de créer dynamiquement l'expression e dans $c4. Je suis capable de construire un tableau de noms de colonnes (dans cet exemple, pour inclure C1 à C3), mais je n'arrive pas à comprendre comment construire l'expression en utilisant ceci.

J'ai quelques limites:

  • Je suis coincé avec V2 et je suis incapable de mettre à jour la version de PowerShell utilisées
  • Les fichiers CSV sont très grandes, donc a besoin de la solution Tenez-en compte

Toute aide est grandement appréciée!

Merci.

Répondre

0

Vous pouvez créer un scriptblock à partir d'une chaîne que vous avez composé de vos noms de champs par exemple:

$sb = [scriptblock]::create("`$_.C1+`$_.C2+`$_.C3") 
$c4 = @{n="Grouped";e=$sb} 

Avec une chaîne, vous pouvez utiliser des constructions en boucle et divers pour créer votre chaîne et passez ensuite que pour [scriptblock]::create() pour récupérer un scriptblock que vous pouvez utiliser pour la partie Expression de la table de hachage Select.

+0

Cela a fonctionné parfaitement, merci! – steveatstellar