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-ID: 4665872784

Url: https://administrator.de/forum/powershell-hinzufuegen-von-daten-zur-vorhandener-json-datei-4665872784.html

Ausgedruckt am: 22.12.2024 um 20:12 Uhr

4400667902
Lösung 4400667902 17.11.2022 aktualisiert um 15:52:41 Uhr
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.
mistergemuese
mistergemuese 18.11.2022 um 07:19:19 Uhr
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'