PowerShell Json Suchen und Ersetzen

Mitglied: garciam

garciam (Level 1) - Jetzt verbinden

04.12.2020, aktualisiert 07.12.2020, 442 Aufrufe, 6 Kommentare, 2 Danke

Hallo

Ich versuche die bookmarks Datei zu durchsuchen und einige Einträge zu löschen. Das Suchen und Ersetzen funktioniert grundsätzlich, jedoch nur bis eine neue Zeile kommt. Kann mir jemand sagen, wie ich das machen muss, damit ich über mehrere Zeilen suchen und ersetzen kann?

Ich habe z.B. folgende Zeilen in der bookmarks Datei. Nun möchte ich ab der geschweiften Klammer alles löschen.

"children": [ {
"date_added": "13227086606439531",
"guid": "93561719-8a22-4cfc-85b5-beef11e15d94",

Vielen Dank.
Mitglied: 146707
146707 (Level 1)
04.12.2020, aktualisiert 05.12.2020
Ich könnte dir das jetzt sagen (Get-Content liefert dir ein Array, das kannst du mit dem Parameter -raw umgehen dann kannst du zeilenübergreifend matchen) aber ich möchte dir hier extra eine bessere Methode bei solchen Sachen aufzeigen.
Das was du da hast ist eine JSON Datei und in solchen Dateien mit Regex-Replace zu arbeiten ist Fehleranfällig weil solche Dateien hinter auch weiterhin gültig sein müssen und weil man diese nativ mit Powershell parsen und bearbeiten und zurückschreiben kann, ist das in der Regel zu bevorzugen, guckst du dieses Beispiel
Ergebnis
Du siehst das ist erstens klarer aufgebaut, sicherer und wartungsfreundlicher.
Damit kannst du auch gezielt einzelne Knoten und Properties schön komfortabel bearbeiten ohne mit Regex hantieren zu müssen oder sich gg. Fehler einzubauen.

Gruß p.
Bitte warten ..
Mitglied: garciam
07.12.2020, aktualisiert um 08:30 Uhr
Hallo primal

Danke für deinen Ansatz. Das ist bestimmt der richtige Weg, ich bin aber sehr schlecht mit PowerShell, Arrays, usw. Über children kann ich nicht bestimmen welche Favoriten gelöscht werden sollen und welche nicht. In den Favoriten gibt es einen Ordner "Allgemein", dieser und alle darin enthaltenen Favoriten möchte ich löschen. Ich müsste dies also über den Name machen können, denke ich.

Die Bookmarks Datei ist folgendermassen aufgebaut:

{
"checksum": "451b0f33043ebbc73b1b4cd713c40dd7",
"roots": {
"bookmark_bar": {
"children": [ {
"date_added": "13228425144239994",
"guid": "bc3e3360-9987-4fd7-86b0-36579989366e",
"id": "5",
"name": "Favorit01",
"show_icon": false,
"source": "import_fre",
"type": "url",
"url": "http://go.favorit01/9095"
} ],
"date_added": "13232094767386493",
"date_modified": "13249488022274696",
"guid": "00000000-0000-4000-a000-000000000002",
"id": "1",
"name": "Favoritenleiste",
"source": "unknown",
"type": "folder"
},
"other": {
"children": [ {
"children": [ {
"date_added": "13228425144239994",
"guid": "a054e20f-a1c0-4c5a-a02c-25263584cdd6",
"id": "8",
"name": "Favorit02",
"show_icon": false,
"source": "import_fre",
"type": "url",
"url": "https://www.favorit02/Extranet"
}, {
"date_added": "13228425144239994",
"guid": "b329e2fa-598a-4bee-bc23-a3c220b2c21a",
"id": "9",
"name": "Favorit03",
"show_icon": false,
"source": "import_fre",
"type": "url",
"url": "http://intranet.favorit03/"
}, {
"date_added": "13228425144239994",
"guid": "5fb5e6e8-269c-406a-aec0-07ec8c97af0c",
"id": "10",
"name": "Favorit04",
"show_icon": false,
"source": "import_fre",
"type": "url",
"url": "http://favorit04/login.aspx"
}],
"date_added": "13232094772042553",
"date_modified": "0",
"guid": "596645bd-206e-4f21-99e1-11c5e777b829",
"id": "7",
"name": "Allgemein",
"source": "import_fre",
"type": "folder"
}, {
"children": [ {
"date_added": "13228425144255622",
"guid": "b8914a50-752d-46f0-ac7e-a84b7a453aba",
"id": "21",
"name": "Favorit05",
"show_icon": false,
"source": "import_fre",
"type": "url",
"url": "http://favorit05"
}, {
"date_added": "13228425144255622",
"guid": "ac5a9e3e-5232-4af4-b5a1-36a1720cd264",
"id": "22",
"name": "Favorit06",
"show_icon": false,
"source": "import_fre",
"type": "url",
"url": "https://favorit06:8181/"
...

07-12-_2020_08-21-09 - Klicke auf das Bild, um es zu vergrößern


Für weitere Tipps wäre ich dir Dankbar.

Gruss
Bitte warten ..
Mitglied: 146707
146707 (Level 1)
LÖSUNG 07.12.2020, aktualisiert um 11:00 Uhr
Für weitere Tipps wäre ich dir Dankbar.
Gerne.
Ein einfaches Where-Object reicht dir hier zum Ausfiltern der jeweiligen Objects:
Nur zur Info: Nicht vergessen den "checksum" Knoten zu löschen, sonst mag Edge das angepasste File nicht mehr ;-) face-wink

Also in Gänze würde ein Anpassen des Bookmark-Files des aktuellen Users für deinen Fall so aussehen: (inkl. Löschen der "checksum"-Property)
G. p.
Bitte warten ..
Mitglied: garciam
07.12.2020 um 11:54 Uhr
Hallo Primal

Ich habe auch noch etwas rumprobiert, jedoch nicht so wirklich mit Erfolg.

Dein Script sieht gut aus und scheint zu funktionieren :-) face-smile

Super, vielen Dank!!!

Gruss
Bitte warten ..
Mitglied: 146707
146707 (Level 1)
07.12.2020, aktualisiert um 11:56 Uhr
Schön. Dann bitte auch den Beitrag schließen. Thanks.

G. p.
Bitte warten ..
Mitglied: garciam
07.12.2020 um 13:00 Uhr
Klar, wollte nur noch kurz testen bevor ich schliesse.
Bitte warten ..
Heiß diskutierte Inhalte
Linux
Installation Grammm Server
smeclntVor 1 TagFrageLinux13 Kommentare

Hallo zusammen, meine Linux Kenntnisse sind sehr rudimentär trotzdem suche ich eigentlich ständig nach einer Alternative zu MS Exchange. Bis jetzt gab es nichts ...

Switche und Hubs
Probleme im Netzwerk Switche teilweise nicht erreichbar
hukimanVor 9 StundenFrageSwitche und Hubs29 Kommentare

Guten Morgen, seit Monaten haben wir hier immer wieder Probleme mit dem Netzwerk, das Problem konnte ich leider aber noch immer nicht finden. Es ...

Erkennung und -Abwehr
Einer Malware auf der Spur. Benötige Sherlock Holmes!
streamVor 21 StundenFrageErkennung und -Abwehr7 Kommentare

Guten Abend Wenn ich meine Windows-10-Kiste starte, so gibt mir mein Router eine Meldung aus, dass eine bestimmte IP-Adresse wegen Bösartigkeit geblockt wurde. Auf ...

Windows 10
Windows 10 interes Mikro ohne Funktion
TPH125Vor 1 TagFrageWindows 1011 Kommentare

Hallo zusammen, Ich verzweifelt bald. Besitze einen Medion Akoya MD 97110. Habe Windows 10 installiert, seit dem funktioniert das inigrierte Mikrofon nicht mehr. Gerät ...

Batch & Shell
Tabellarische Ausgabe der Netzwerkschnittstellen
gelöst dysti99Vor 8 StundenFrageBatch & Shell18 Kommentare

Mit - ip a - werden ja die Netzwerkschnittstellen angezeigt. Ich möchte mit ein Batchscript folgende Ausgabe erreichen: 1 eth0 192.168.1.1 AD:13:67:56:14:D1 2 eth1 ...

Festplatten, SSD, Raid
(USB) Festplatten laut ?
TomEngelVor 1 TagFrageFestplatten, SSD, Raid6 Kommentare

Ich grüsse Sie Alle. Eine Frage eines engagierten Laien Habe mehrere 3,5 " Festplatte. Einige schon recht alt 8 Jahre, andere ca 2-3 jahre ...

Ubuntu
Mailserver Test Provider IP
gelöst it-blzVor 1 TagFrageUbuntu9 Kommentare

Hallo, ist es möglich einen "Mailserver" (Imap + smtp) in einer Virtual Box mit einer Provider IP (dynamisch - ist allerdings konstant) zu testen? ...

Linux Netzwerk
SAMBA FS Portfreigabe
Jannik2018Vor 23 StundenFrageLinux Netzwerk17 Kommentare

Hallo zusammen, ich habe eine Portfreigabe für meinen SAMBA Server mit Netzwerkfreigaben auf port 445 TCP eingerichtet allerdings wenn ich per DNS oder externer ...