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