hanznappel
Goto Top

Powershell Eine bestimmte Zeile in einer datei überschreiben

Guten Tag, ich habe gerade angefangen mich mit Powershell auseinander zu setzen und stehe nun vor folgendem Problem:

Ich möchte gerne eine bestimmte Zeile in einer Ini Datei überschreiben oder etwas anfügen. Ich weiss nur leider nicht wie ich das hinbekommen soll.
Ich habe zwei möglichkeiten gefunden einmal Set-Content und das -replace von update-list. Nur bekomme ich es leider nicht hin das er mir nur die Zeile
überschreibt. Also es ist eine Ini Datei in der Datenbankinformationen stehen und ich möchte den Benutzernamen für eine bestimmte Verbindung per script setzen.

Da der Eintrag für den Benutzernamen mehrfach eingetragen ist, hast mir replace natürlich alle Einträge überschrieben und mit set-content schreibt er die Datei quasi neu.

Da ich beim Zeilenweisen auslesen der Datei einen Zähler hochzählen lasse, wäre es kein Problem die Zeile per Zeilennummer anzusprechen, nur hab ich leider
keinen Plan wie ich das mit Powershell Bewerkstellige. Hat jemand eine Idee?

Gruss
HanzNappel

Content-ID: 147858

Url: https://administrator.de/forum/powershell-eine-bestimmte-zeile-in-einer-datei-ueberschreiben-147858.html

Ausgedruckt am: 19.04.2025 um 10:04 Uhr

77559
77559 28.07.2010 um 16:47:14 Uhr
Goto Top
Hallo Hans,

Google ist dein Freund, gleich der erste Eintrag ist doch viel versprechend:
INI File PowerShell Functions.

Gruß
LotPings
HanzNappel
HanzNappel 29.07.2010 um 12:00:50 Uhr
Goto Top
Hallo LotPings,

Google ist sogar ein guter Freund von mir ^^

Mit den Funktionen hab ich das Problem das:

1) Er alle Absätze (Leerzeilen) rausschmeisst, ist jetzt nicht so schlimm.
2) Das hinterher alles wirr durcheinander in der Ini steht, was ich ziemlich doof finde.

Aber trotzdem Danke.

Gruss
HanzNappel
HanzNappel
HanzNappel 03.08.2010 um 11:24:14 Uhr
Goto Top
Hier die Lösung:

  1. File to change
$file = c:\myFile.txt

  1. Get file content and store it into $content variable
$content = Get-Content -Path $file

  1. Replace the line number 4 by a new text
$content[3] = 'new text'

  1. Set the new content
$content | Set-Content -Path $file


If file was formated has the fllowing :
line 1
line 2
line 3
line 4
line 5

The result will be :
line 1
line 2
line 3
new text
line 5

Hope this helps.