Powershell fonction pour remplacer ou ajouter des lignes dans les fichiers texte

Je suis en train de travailler sur un script powershell qui permet de modifier des fichiers de configuration. J'ai des fichiers comme ceci:

#####################################################
# comment about logentrytimeout
#####################################################
Logentrytimeout= 1800

qui devrait ressembler à ceci:

#####################################################
# comment about logentrytimeout
#####################################################
Logentrytimeout= 180
disablepostprocessing = 1
segmentstarttimeout = 180

Si il y a un jeu de clés(Logentrytimeout), il suffit de le mettre à jour à la valeur donnée. Ignorer les commentaires, où la clé est mentionné(les lignes commençant par #). La Clé est sensible à la casse.

Si la clé n'est pas définie(disablepostprocessing et segmentstarttimeout), ajouter une clé et une valeur dans le fichier. Ma fonction jusqu'à présent va comme ceci:

function setConfig( $file, $key, $value )
{
  (Get-Content $file) |
  Foreach-Object {$_ -replace "^"+$key+".=.+$", $key + " = " + $value } |
  Set-Content $file
}

setConfig divider.conf "Logentrytimeout" "180"
setConfig divider.conf "disablepostprocessing" "1"
setConfig divider.conf "segmentstarttimeout" "180"
  • Quelle est la bonne regex?
  • Comment puis-je vérifier si il y avait un remplacement?
  • Si il n'y a pas de remplacement: Comment puis-je ajouter $key+" = "+$valeur dans le fichier alors?
InformationsquelleAutor mles | 2013-03-27