mistergemuese
Goto Top

PowerShell - Hinzufügen von Daten zur vorhandener JSON Datei

Guten Tag liebe Community,

ich habe ein PowerShell Skript erstellt welches anhand einer JSON Datei, Benutzern Drucker zuweisen kann. Nun möchte ich per PowerShell auch Daten zur JSON Datei hinzufügen. Leider stehe ich hier auf dem Schlauch und komme nicht weiter, nach 2h Google befragen habe ich mir nun gedacht ich erstelle einen Beitrag um nicht komplett zu verzweifeln....

So sieht mein Skript aus:
2022-11-17 15_22_53-● $jsonfile = 'pfad zur json datei' • untitled-1 - powershell - visual studio co

Und so sieht die zugehörige JSON Datei aus:
2022-11-17 15_24_01-config.json - powershell - visual studio code

Mein Ziel ist es nun den rot markierten Block auf Bild 2 per PowerShell hinzuzufügen. Schön wäre es auch wenn ich bei Eingabe des Benutzernamens die Einrichtung löschen könnte.

Bei meiner Suche auf Google bin ich immer wieder auf den Befehlt Add-Member gestoßen, jedoch weiß ich hier nicht richtig wie dieser einzusetzen ist.

Ich wäre über jeden Tipp sehr dankbar auch wenn es nur ein Anstoß in die Richtige Richtung ist. Ich mache das erste mal etwas mit JSON finde die Art der Datenspeicherung jedoch recht passend für meine Anwendung, wobei es mit XML vermutlich wesentlich einfacher gewesen wäre...

Ich wünsche noch einen schönen Nachmittag.
-mistergemuese

Skript:
$jsonFile = 'Pfad zur JSON DATEI'  
$data = Get-Content -Raw -Path $jsonFile | ConvertFrom-Json
$usersprinters = ($data.members | Where-Object {$_.username -eq $ENV:USERNAME}).printers
$autoPrinterEnable = ($data.members | Where-Object {$_.username -eq $ENV:USERNAME}).enable

#If automatic distribution is enabled, run it for each object.
if ($autoPrinterEnable -eq $True){
    Write-Host "Druckerverteilung ist für $ENV:USERNAME aktiviert."  
    foreach ($printer in $usersprinters){
        Write-Host "Drucker wird eingerichtet: $printer"  
        Add-Printer -ConnectionName $printer
    }
}

JSON:
{
	"dataName": "autoPrinterList",  
	"members": [{  
			"username": "testuser1",  
			"enable": "true",  
			"printers": ["\\\\testserv\\testprint3","\\\\testserv\\testprint4"]  
		},
		{
			"username": "testuser2",  
			"enable": "false",  
			"printers": ["\\\\testserv\\testprint1","\\\\testserv\\testprint2"]  
		}
	]
}

Content-Key: 4665872784

Url: https://administrator.de/contentid/4665872784

Printed on: April 28, 2024 at 14:04 o'clock

Mitglied: 4400667902
Solution 4400667902 Nov 17, 2022 updated at 14:52:41 (UTC)
Goto Top
https://tio.run/##lZE9a8MwEIZn61cIUdBQp2C3UyFgKHQIJS20W@xBSq80QR9GH@mQ5r ...

$jsonFile = 'Pfad zur JSON DATEI'  
$data = Get-Content -Raw -Path $jsonFile | ConvertFrom-Json
$data.members += [pscustomobject]@{
    username = 'blablub'  
    enable = 'true'  
    printers = '\\serv1\p1','\\serv1\p2'  
}

Uk.
Member: mistergemuese
mistergemuese Nov 18, 2022 at 06:19:19 (UTC)
Goto Top
Vielen Dank!!!

$jsonFile = 'Pfad zur JSON DATEI'  
$data = Get-Content -Raw -Path $jsonFile | ConvertFrom-Json
$data.members += [pscustomobject]@{
    username = 'blablubbla'  
    enable = 'true'  
    printers = '\\serv1\p1','\\serv1\p2'  
}

$data | ConvertTo-Json -Depth 3 | Out-File 'Pfad zur JSON DATEI'