derhoeppi

PowerShell Array Replace()

Hallo,

ich habe ein Array, dass derzeit Daten aus einer CSV Datei importiert. Der Aufbau der CSV sieht so aus:

Name;Versuch;Kommentar
Max;2;k.A.
Ingrid;2;k.A.
Peter;2;Peter ist der neue Max

Ich möchte nun den Namen Peter durch Max ersetzen. Dabei möchte ich verhindern, dass der Kommentar geändert wird. Bisher habe ich das bei einem einfachen Array immer durch die Methode Replace() angewandt, aber wenn ich das mit dem Array mache, wird nicht nur der Name sondern auch der Kommentar geändert.
$arr = $arr -replace("Peter", "Max")  

Wie kann ich die Methode Replace nur auf den Namen anwenden?

Gruß
derhoeppi
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 286820

Url: https://administrator.de/forum/powershell-array-replace-286820.html

Ausgedruckt am: 02.08.2025 um 01:08 Uhr

114757
Lösung 114757 27.10.2015 aktualisiert um 20:49:15 Uhr
$arr = @'  
Name;Versuch;Kommentar
Max;2;k.A.
Ingrid;2;k.A.
Peter;2;Peter ist der neue Max
'@ | convertfrom-csv -Delimiter ";"  

$arr | %{$_.Name = $_.Name -replace '^Peter$','Max'}  
$arr

oder alternativ auch:
$arr | ?{$_.Name -eq 'Peter'} | %{$_.Name = 'Max'}  
$arr
Gruß jodel32
TlBERlUS
TlBERlUS 27.10.2015 aktualisiert um 15:40:20 Uhr
Hi,

regex löst das Problem
clear-host
$arr = gc .\Desktop\test.csv
foreach($a in $arr){
$a  -replace "^(.?)Peter","Max"   
}

Edit: Jodel war mal wieder schneller