En réponse à Stéphane Papp


Mon collègue, Stéphane Papp, consultant principal dans le domaine du management et de la sécurité chez Microsoft France, m’a lancé un petit défi sur son blog dans le billet suivant : http://blogs.msdn.com/spapp/archive/2007/06/29/int-grer-les-pilotes-de-contr-leur-disque-dans-bdd-2007.aspx. J’ai tenté de mettre un commentaire sur son billet, mais sans succès, alors j’ai décidé de blogger la réponse J


Petit rappel, le but est de passer de ça


id =”PCI\VEN_8086&DEV_2822&CC_0104″,”iaStor”


à ça


PCI\VEN_8086&DEV_2822&CC_0104=”iaStor”


Pour chaque ligne d’un fichier txtsetup.sif. Dans son billet, Stéphane propose une solution avec Excel qu’il maitrise mieux que PowerShell, et suppose que je trouverai bien une ligne de commande PowerShell pour le faire. Comme j’adore les petits défis dans le genre, je vous livre la solution J Prenons donc un fichier txtsetup.sif avec le contenu suivant :


id =”PCI\VEN_8086&DEV_2822&CC_0104″,”iaStor”
id =”PCI\VEN_8086&DEV_2822&CC_0105″,”iaStor”
id =”PCI\VEN_8086&DEV_2822&CC_0106″,”iaStor”
id =”PCI\VEN_8086&DEV_2822&CC_0107″,”iaStor”


Voici une commande PowerShell permettant de faire la transformation demandée (j’imagine qu’il doit y en avoir d’autresJ)


get-content txtsetup.sif | % {$_.Split(‘”‘)[1] + “=””” + $_.Split(‘”‘)[3] + “”””}


et le résultat :


PCI\VEN_8086&DEV_2822&CC_0104=”iaStor”
PCI\VEN_8086&DEV_2822&CC_0105=”iaStor”
PCI\VEN_8086&DEV_2822&CC_0106=”iaStor”
PCI\VEN_8086&DEV_2822&CC_0107=”iaStor”


La solution avec Excel :


=STXT(A1;TROUVE(CAR(34);A1)+1;TROUVE(CAR(34)&”,”&CAR(34);A1)-TROUVE(CAR(34);A1)-1)&”=”&CAR(34)&STXT(A1;TROUVE(CAR(34)&”,”&CAR(34);A1)+3;NBCAR(A1)-TROUVE(CAR(34)&”,”&CAR(34);A1)-3)&CAR(34)


Qui a dit que PowerShell c’était compliqué ? J

Comments (3)

  1. Moi, je fais ça avec Visual Studio et une petite expression régulière 😉

    CTRL+H

    Find what: id ="{PCI.@}",{.+}

    Replace With: 1=2

    Mais c’est tricher, j’imagine ?

  2. MSDNArchive says:

    Non pas du tout, d’ailleurs j’ai bien précisé qu’il s’agissait d’une des façons de faire :) Stéphane me demandait indirectement via son blog comment faire avec powershell tout simplement :)

    disons qu’Excel et Visual Studio ne sont pas des outils gratuits comme powershell et que je pense que la manip doit etre plus longue en les utilisant.

  3. boujluc says:

    Au bon vieux temps avec VI ca donnait

    :1,$s/^.* ="(.*)",/1=