PowerShell Json Suchen und Ersetzen

Mitglied: garciam

garciam (Level 1) - Jetzt verbinden

04.12.2020, aktualisiert 07.12.2020, 406 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
Off Topic
Wohin mit alter (Server)Hardware?
insidERRVor 1 TagFrageOff Topic35 Kommentare

Hallo zusammen. Nachdem unser Leasing nach 5 Jahren ausgelaufen ist, haben wir auf der Arbeit neue Server bekommen. Wieder sind es zwei Hosts für ...

Windows Netzwerk
Wie VPN in Zeiten von HomeOffice einfach gestalten
VizKyneticVor 1 TagFrageWindows Netzwerk12 Kommentare

Moin! Vermehrt kommen die Anfragen zu HomeOffice Arbeitsplätzen und der Möglichkeit Remote zu arbeiten. Wir haben verschiedene Lösungen im Einsatz, da diese Struktur über ...

Datenschutz
DSGVO-konforme Löschsoftware für Festplatten
alwayshungryVor 23 StundenFrageDatenschutz26 Kommentare

Hallo zusammen, welche Software gibt es, damit man DSGVO-konform Festplatten löschen kann? Ich kenne zwar Blancco, aber gibt es denn da keine gesetzeskonforme Alternativen? ...

Windows 10
Windows 10 Anmeldezeitenbeschränkung für Kinder
gelöst bastian23Vor 1 TagFrageWindows 1014 Kommentare

Hallo, kennt jemand von Euch eine Lösung, um meine Kinder daran zu hintern ihre Notebooks nach z.B. 21 Uhr zu nutzen? Ein einfacher shutdown ...

TK-Netze & Geräte
Panasonic NS700 an S0 von Fritzbox
jensgebkenVor 1 TagFrageTK-Netze & Geräte38 Kommentare

Hallo Gemeinschaft, gibt es eine Möglichkeit meine gebrauchte NS700 mit einer Fritzbox zu verbinden, so dass ich auch raustelefonieren kann - hinter der NS ...

Microsoft
Druckerwarteschlange druckt nur 9999 Seite
WBPowerVor 1 TagFrageMicrosoft8 Kommentare

Hallo zusammen, ich habe folgende Problemstellung. Wir betreiben einen Printserver auf Basis Windows Server 2016 (ca. 100 Drucker unterschiedlichster Hersteller und Modelle). Die Kollegen ...

Switche und Hubs
100Mbit per 4 Adern
geforce28Vor 1 TagFrageSwitche und Hubs5 Kommentare

Hallo zusammen, ich habe folgendes Szenario realisiert: Über 4 Adern (alte Telefonleitung, die in der Wand liegt mit, ca. 15m) ist eine 100Mbit Ethernet ...

Windows 10
Was sagt ihr zum Windows 10 auf den Raspberry Pi 4 ?
SpielfoxLPVor 1 TagFrageWindows 108 Kommentare

Moin , Ich habe gestern auf den Raspberry Pi 4 Windows 10 installiert und wollte Frage was ihr da von haltet ?