Flash info

Les vrais admins utilisent la ligne de commande... (dixit le mag Windows IT Pro du 6/02/07) Avis aux amateurs pour affirmer leur virilité Surprised.
La suite est ici.

 
Accueil arrow Bibliothèque de scripts arrow Fichiers et disques arrow Importer un fichier ini dans un tableau
Importer un fichier ini dans un tableau
Écrit par Arnaud Petitjean [MVP]   
23-07-2007

Ce script permet d'importer un fichier .ini dans un tableau. Cela permet ensuite d'accèder avec une grande facilité aux données situées à l'intérieur.

Script : 

# import-ini.ps1

param ($file)
$ini = @{}
switch -regex -file $file
{
     "^\[(.+)\]$"
     {
            $section = $matches[1]
            $ini[$section] = @{}
     }
     "(.+)=(.*)"
     {
            $name, $value = $matches[1..2]
            $ini[$section][$name] = $value
     }
}
$ini
 
  
La commande switch (-regex -file $file) {...} parcourt le fichier $file ligne par ligne. Elle évalue la ligne selon chacune des expressions régulières qui sont ensuite proposées, et si l'évaluation d'une expression régulière s'avère positive le code qui suit est exécuté.

Cette commande me permet de parcourir le fichier à la recherche des deux types de ligne qu'on peut rencontrer dans un fichier INI:

* l'en-tête de section au format [nom de section]
Dans ce cas, je prends la chaîne entre crochets et j'en fais mon nouveau nom de section. J'ajoute à mon tableau global un nouveau tableau avec ce nom de section comme clé de hachage.

* le couple nom = valeur
Dans ce cas, je crèe une entrée dans mon tableau de section, avec le nom comme clé et la valeur comme... valeur.

J'ai écrit ce script assez rapidement et je ne l'ai pas testé avec beaucoup de fichiers. Il est donc probable qu'il y ait des bugs avec certaines entrées particulières. Mais tel quel, il devrait marcher dans la plupart des cas.

Prenons le fichier servers.ini fictif suivant:

[ExchangeServer]
server1=srv-msg-01
server2=srv-msg-02
server3=srv-msg-03

[DomainController]
server1=srv-dc-01
server2=srv-dc-02
server3=srv-dc-03


On pourra l'importer et accéder à ses valeurs ainsi: 

PS> $servers = import-ini servers.ini

# 1ere syntaxe possible:
PS> $servers.DomainController.server1
srv-dc-01

# 2e syntaxe possible:
PS> $servers["ExchangeServer"]["server2"]
srv-msg-02

# On peut même mélanger les styles:
PS> $servers["ExchangeServer"].server3
srv-msg-03

# Un exemple d'utilisation de variable:
PS> $role = "DomainController"
PS> $servers.$role

Name                           Value
----                           -----
server2                        srv-dc-02
server1                        srv-dc-01
server3                        srv-dc-03
  

Auteur : Janel
Pour plus d'infos, consultez l'article complet publié sur son blog à l'adresse suivante : http://janel.spaces.live.com/blog/cns!9B5AA3F6FA0088C2!312.entry

Dernière mise à jour : ( 23-07-2007 )
 
© 2018 PowerShell-Scripting.com