2016-08-22 2 views

Antwort

1

Ihre Beispieldaten erscheint im JSON-Format zu sein, so dass Sie würde es ändern, indem Sie die JSON-String in ein Objekt konvertieren, um die Eigenschaften ändern, dann wandeln Sie das Objekt zurück in eine JSON-String, wie folgt aus:

$file = 'C:\path\to\sample.txt' 

(Get-Content $file -Raw) | ConvertFrom-Json | ForEach-Object { 
    $_.port  = 23 
    $_.protocol = 'tcp' 
    $_     # echo current object to feed it back into the pipeline 
} | ConvertTo-Json -Compress | Set-Content $file 

Auf PowerShell v2 oder früher müssen Sie (Get-Content $file) | Out-String ausführen, um den Parameter -Raw zu emulieren, der mit v3 eingeführt wurde.

1

Da Sie mit JSON arbeiten, können wir JSON verwenden!

$json = Get-Content .\sample.txt | ConvertFrom-Json 
$json.port = 23 
$json.protocol = 'tcp' 
$json | ConvertTo-Json -Compress | Out-File .\sample.txt 
  • Zuerst las ich die Datei und lässt Powershell aus JSON konvertieren zu einem Objekt. (Zeile 1)
  • Ich kann jetzt dieses Objekt bearbeiten. (Zeile 2-3)
  • Schließlich konvertiere ich es wieder in JSON und schreibe es in die Datei. (Linie 4)

Hoffe, das hilft.

+0

Danke für Ihre Antwort. Ich bin in diesem Code etwas verwirrt. Kannst du mir bitte erklären, wie man den 'port' auf '30' und 'protocol' auf 'udp' mit dem von dir geschriebenen Code umstellt? Danke im Voraus. – rcubefather

+0

Haben Sie es ... Lassen Sie mich Ihren Code versuchen ... Danke – rcubefather

+0

Der Bearbeitungsteil der Portnummer ist dieser Teil: $ JSON **. Port = 23 ** –

Verwandte Themen