Ich arbeite an einem Powershell-Skript, das Konfigurationsdateien ändert. Ich habe Dateien wie folgt aus:Powershell-Funktion zum Ersetzen oder Hinzufügen von Zeilen in Textdateien
#####################################################
# comment about logentrytimeout
#####################################################
Logentrytimeout= 1800
, die wie folgt aussehen sollte:
#####################################################
# comment about logentrytimeout
#####################################################
Logentrytimeout= 180
disablepostprocessing = 1
segmentstarttimeout = 180
Wenn es einen Schlüsselsatz (Logentrytimeout) ist, aktualisieren Sie es nur auf den angegebenen Wert. Kommentare ignorieren, wo der Schlüssel erwähnt wird (Zeilen, die mit # beginnen). Der Schlüssel unterscheidet nicht zwischen Groß- und Kleinschreibung.
Wenn der Schlüssel nicht gesetzt ist (disablepostprocessing und segmentstarttimeout), hängen Sie Schlüssel und Wert an die Datei an. Meine Funktion so geht weit wie folgt aus:
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"
- Was ist die richtige Regex?
- Wie überprüfe ich, ob es einen Ersatz gab?
- Wenn es keinen Ersatz gab: Wie kann ich dann $ key + "=" + $ Wert an die Datei anhängen?