Pracuję nad skryptem powershell, który modyfikuje pliki konfiguracyjne. Mam pliki tak:Funkcja Powershell do zamiany lub dodania wierszy w plikach tekstowych
#####################################################
# comment about logentrytimeout
#####################################################
Logentrytimeout= 1800
który powinien wyglądać tak:
#####################################################
# comment about logentrytimeout
#####################################################
Logentrytimeout= 180
disablepostprocessing = 1
segmentstarttimeout = 180
Jeśli istnieje klucz zestaw (Logentrytimeout), po prostu go zaktualizować do podanej wartości. Zignoruj komentarze, gdzie wymieniono klucz (linie zaczynające się od #). Klucz nie uwzględnia wielkości liter.
Jeśli klucz nie jest ustawiony (czas nieaktywny i czas segmentu), należy dołączyć do pliku klucz i wartość. Moja funkcja do tej pory idzie tak:
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"
- Jaka jest poprawna regex?
- Jak sprawdzić, czy nastąpiła wymiana?
- Jeśli nie było wymiany: w jaki sposób mogę do tego pliku dołączyć klucz $ + + = = + wartość $?