Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Powershell -replace

Mitglied: internet2107

internet2107 (Level 1) - Jetzt verbinden

21.08.2014, aktualisiert 10:04 Uhr, 1140 Aufrufe, 5 Kommentare, 2 Danke

Guten Morgen zusammen.

Ich habe eine Datei, aus der Werte ausgelesen werden und in einer Variable gespeichert werden.
Um die Werte nicht direkt in der Datei ändern zu müssen, möchte ich das mit Textboxen machen. Alles klappt soweit, nur leider wird in der Textdatei selbst der Wert nicht ersetzt, die Frage ist warum ?.

01.
$path = "E:\Temp\settings_test.ini" 
02.
Get-Content $path | ForEach-Object -Begin { $settingsmenu = @{ } } -Process { $store = [regex]::split($_, '='); if (($store[0].CompareTo("") -ne 0) -and ($store[0].StartsWith("[") -ne $True) -and ($store[0].StartsWith("#") -ne $True)) { $settingsmenu.Add($store[0], $store[1]) } } 
03.
$param100 = $settingsmenu.Get_Item("Param100") 
04.
 
05.
$FormEvent_Load = { 
06.
	 
07.
	$pfad_alt.Text = $param100 
08.
	 
09.
10.
 
11.
$buttonSpeichern_Click = { 
12.
	$param100_neu = $pfad_neu.Text 
13.
	 
14.
	Write-Host $param100 
15.
	Write-Host $param100_neu 
16.
	 
17.
	(get-content $path) | foreach-object { $_ -replace $param100, $param100_neu } | set-content $path 
18.
19.
 
Wie man im Code sehen kann, wird beim Start der Wert vom "param100" eingelesen und in der Textbox auch angezeigt.
In der nächsten Textbox soll man die Möglichkeit haben, den Wert zu ändern und mit dem Button "Speichern" wieder zurück in die Textdatei zu schreiben, in dem Fall also der Wert "param100_neu"
Mich wundert, dass er per "Write-Host" die richtigen Werte anzeigt, also alles versteht, aber in der Textdatei selbst den Wert nicht ändert.
Mitglied: AnkhMorpork
21.08.2014 um 07:34 Uhr
Hallo,

wenn ich das richtig im Sinn habe, löscht du den Wert mit Write-Host. Gibs mal einfach mit "..." aus.

Gruß

ANKH
Bitte warten ..
Mitglied: colinardo
21.08.2014, aktualisiert um 08:57 Uhr
Moin zusammen,
-replace interpretiert im Eingabestring spezielle Zeichen als Regular Expressions, und da dein Pfad sicherlich Backslashes enthält wird er den alten Pfad in der Textdatei nicht finden, da in Regex ein Backslash gefolgt von Buchstaben eine spezielle Bedeutung hat. Mach es mit der normalen Replace Methode:
(get-content $path | Out-String).replace($param100, $param100_neu) | set-content $path 
Grüße Uwe
Bitte warten ..
Mitglied: internet2107
21.08.2014 um 09:22 Uhr
Danke Uwe,

an den Backslash habe ich nicht gedacht, stimmt, danke.
Zumindest ändert er nun entspreched, aber leider auch zuviel des Guten
In der settings_test.ini sind als Beispiel mehrere (4 Stück) dieser "param".

Nach der Änderung hat er nun aber leider auch die Pfade der anderen "Param" geändert.
Es war also für "param100" ein Pfad, wie: "d:\daten\ablage", genauso wie für die "param80...82".
Nur das sich alle entsprechend mit Unterordnern unterscheiden. Er soll aber ja nur den Wert (Pfad) für "param100" ändern
Bitte warten ..
Mitglied: colinardo
LÖSUNG 21.08.2014, aktualisiert um 10:04 Uhr
für deinen ganzen Wust an Code reicht das hier ...
01.
$path = "E:\Temp\settings_test.ini"  
02.
(gc $path) | %{$_ -replace '^(Param100=)(.*)',('$1'+$pfad_neu.Text)} | set-content $path
Grüße Uwe
Bitte warten ..
Mitglied: internet2107
21.08.2014 um 10:05 Uhr
That's all. Danke dir...
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Powershell aus Powershell starten (start-process powershell) mit Leerzeichen im Pfad

gelöst Frage von adm2015Batch & Shell1 Kommentar

Ich möchte einfach ein Powershell Script aus einem anderen Powershell Script aufrufen. (start-process powershell "c:\test.ps1") Jedoch habe ich ein ...

Batch & Shell

Powershell elevated

Tipp von AnkhMorporkBatch & Shell2 Kommentare

Ein kleiner Tipp am Rande für alle PS-Novizen (ich wars einfach leid): Um eine Konsole mit elevated rights schnell ...

Batch & Shell

Bereinigungsskript mit PowerShell

Frage von hillifantBatch & Shell5 Kommentare

Hallo, da ich nicht soo die Ahnung von PowerShell habe muss ich euch mal was fragen.Ich soll ein Skript ...

Batch & Shell

Powershell und XML

gelöst Frage von Cougar77Batch & Shell2 Kommentare

Hallo, ich habe mal wieder ein kleines Problem Ich bin grade dabei ein paar .XML-Dateien für unser System umzustricken. ...

Neue Wissensbeiträge
Vmware
VMware Update für den ESXi 5.5 verfügbar
Information von sabines vor 27 MinutenVmware

Nach dem ganzen Hickhack um Update mit Microcode Anpassungen und Rückzug, gibt es nun für den ESXi 5.5 ein ...

CPU, RAM, Mainboards

Meltdown und Spectre: Intel zieht Microcode-Updates für Prozessoren zurück

Information von keine-ahnung vor 4 StundenCPU, RAM, Mainboards2 Kommentare

Moin, extrem lutztig. Nur gut, dass ich noch nicht beim Probanden-Bingo mitgemacht habe :-) LG, Thomas

Router & Routing
PfSense als Addon auf QNAP
Information von magicteddy vor 17 StundenRouter & Routing3 Kommentare

Moin, für Spielereien eine ganz nette Idee aber ich fürchte das soetwas auch als echte Firewall genutzt wird: In ...

Datenschutz

Teamviewer kommt für IoT-Geräte wie den Raspberry Pi

Information von magicteddy vor 1 TagDatenschutz1 Kommentar

Moin, jetzt werden IoT Geräte endgültig zur Wanze? Anscheinend kann man auf einem Dashboard seine Geräte visualisieren Ich stelle ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Preis für Wartungsvertrag ok?
gelöst Frage von a-za-zNetzwerkmanagement26 Kommentare

Hallo! Mal ne Frage, weil ich mich mit dem akzeptablen Preis für einen Reaktionszeitvertrag nicht auskenne. Meine Firma hat ...

Windows Server
TEMP-Profile
gelöst Frage von Forseti2003Windows Server20 Kommentare

Guten Morgen, wer kennt sie nicht, die lieben Temporären Benutzerprofile, vorallem immer dann, wenn man sie am wenigsten braucht. ...

Multimedia & Zubehör
Welches Tablet für die Verkäufer?
Frage von Hendrik2586Multimedia & Zubehör15 Kommentare

Guten Morgen meine Lieben, vielleicht könnt ihr mir ja helfen. Es geht um unsere Außendienstmitarbeiter /Verkäufer. Sie sollen demnächst ...

Windows Netzwerk
Ist ein Portforwarding auf einen PC ohne lauschendes Programm ein (großes) Sicherheitsproblem?
Frage von PluwimWindows Netzwerk13 Kommentare

Hallo zusammen, zur Fernwartung eines Rechners an einem anderen Ort nutze ich VNC. Da dieser Rechner einfach nur eine ...