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
Et puis appelez ces informations dans le script PS1:
start-process iexplore.exe $Link1
powershell
scripting
Xavier C
la source
la source
Index was outside the bounds of the array. At C:\testConfigreader.ps1:13 char:264 + ... -ne $True)) { $h.Add($k[0], $k[1]) } } + ~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : OperationStopped: (:) [], IndexOutOfRangeException + FullyQualifiedErrorId : System.IndexOutOfRangeException
Quelqu'un at-il cela fonctionne correctement?[Sections]
ou; semicolon comments
, vous pouvez le faire simplement$config = Get-Content $ConfigPath | ConvertFrom-StringData
. Voir ConvertFrom-StringData pour plus de détails.Il y a un bon fil ici qui montre ce code (en citant le fil lié):
Ensuite, vous pouvez faire:
En supposant un fichier INI qui ressemble à ceci:
Malheureusement, les expressions rationnelles manquent dans le code du lien, vous devrez donc les reproduire, mais il existe une version qui gère les fichiers sans en-têtes de section et les lignes qui sont des commentaires.
la source
switch
avec'^#' {}
. Vous pouvez également accéder au contenu de la table de hachage avec un point, donc cela$links.vendors.link1
devrait aussi fonctionner, ce qui pourrait être un peu mieux à lire.oui, les applets de commande que vous recherchez sont get-content et select-string.
la source
Pour une approche plus complète, envisagez https://github.com/alekdavis/ConfigFile . Ce module prend en charge les fichiers de configuration au format JSON, ainsi que INI. Il permet d'étendre les variables et effectue quelques astuces intéressantes. La chose à retenir est que les noms des paires clé-valeur dans le fichier INI doivent correspondre aux noms des paramètres ou variables de script.
la source