web-dev-qa-db-fra.com

Comment utiliser un fichier de configuration (INI, CONF, ...) avec un script PowerShell?

Est-il possible d'utiliser un fichier de configuration avec un script PowerShell?

Par exemple, le fichier de configuration:

#links
link1=http://www.google.com
link2=http://www.Apple.com
link3=http://www.Microsoft.com

Puis appelez ces informations dans le script PS1:

start-process iexplore.exe $Link1
16
Xavier C

Merci beaucoup pour votre aide Dennis et Tim! Vos réponses me mettent sur la bonne piste et j'ai trouvé this

Paramètres.txt

#from http://tlingenf.spaces.live.com/blog/cns!B1B09F516B5BAEBF!213.entry
#
[General]
MySetting1=value

[Locations]
InputFile="C:\Users.txt"
OutputFile="C:\output.log"

[Other]
WaitForTime=20
VerboseLogging=True

commande PowerShell

#from http://tlingenf.spaces.live.com/blog/cns!B1B09F516B5BAEBF!213.entry
#
Get-Content "C:\settings.txt" | foreach-object -begin {$h=@{}} -process { $k = [regex]::split($_,'='); if(($k[0].CompareTo("") -ne 0) -and ($k[0].StartsWith("[") -ne $True)) { $h.Add($k[0], $k[1]) } }

alors

Après avoir exécuté l'extrait de code, une variable ($ H) contiendra les valeurs dans une haquetable.

Name                           Value
----                           -----
MySetting1                     value
VerboseLogging                 True
WaitForTime                    20
OutputFile                     "C:\output.log"
InputFile                      "C:\Users.txt"

* Pour récupérer un élément de la table, utilisez la commande $h.Get_Item("MySetting1").*

17
Xavier C

Il y a un bon fil ici qui montre ce code (citant du fil lié):

# from http://www.eggheadcafe.com/software/aspnet/30358576/powershell-and-ini-files.aspx
param ($file)

$ini = @{}
switch -regex -file $file
{
    "^\[(.+)\]$" {
        $section = $matches[1]
        $ini[$section] = @{}
    }
    "(.+)=(.+)" {
        $name,$value = $matches[1..2]
        $ini[$section][$name] = $value
    }
}
$ini

Ensuite, vous pouvez faire:

PS> $links = import-ini links.ini
PS> $links["search-engines"]["link1"]
http://www.google.com
PS> $links["vendors"]["link1"]
http://www.Apple.com

En supposant un INI fichier qui ressemble à ceci:

[vendors]
link1=http://www.Apple.com
[search-engines]
link1=http://www.google.com

Malheureusement, les regexes sont manquants du code sur le lien, vous devrez donc les reproduire, mais il y a une version qui gère des fichiers sans en-têtes et lignes de section qui sont des commentaires.

oui, les cmdlets que vous recherchez sont de contenu et de sélection de chaîne.

$content=get-content C:\links.txt
start-process iexplore.exe $content[0]
2
Tim

Pour une approche plus complète, considérez https://github.com/alekdavis/configfile . Ce module prend en charge les fichiers de configuration au format JSON, ainsi que INI. Il permet de développer des variables et quelques astuces soignées. La chose à retenir est que les noms des paires de la valeur de clé dans le INI doivent correspondre aux noms des paramètres de script ou des variables.

0
Alek Davis