Powershell Array eine Hashtable hinzufügen
Hi liebes Forum!
Ich hoffe ihr habt eine Lösung für mein Problem, ewiges googlen hat mich bisher nicht auf den grünen Zweig gebracht.
Folgendes: zur Datenhaltung möchte ich ein Powershellskript schreiben, dass Informationen, die eingegeben werden können, in einer JSON-Datei ablegt. Bisher funktioniert das Skript auch soweit, dass die Daten in die JSON geschrieben werden, allerdings gibt es Probleme beim Hinzufügen neuer Daten.
Ich habe dazu ein Array, in dem Hashtables gespeichert werden sollen. Bei der ersten Eingabe von Daten funktioniert das. Beim zweiten mal funktioniert das auch, jedoch erstellt es ein neues Array (siehe Output unten). Ich möchte jedoch alle weiteren eingegebenen Daten (sprich BIB2) in das erste erstellte Array (in dem sich BIB1 befindet) hinzufügen, sodass ich später die Möglichkeit zum Auslesen und Ändern der Datensätze habe. Hier kommt jedoch ein Fehler, wenn ich dem Array mit $a.Add() einen neuen Wert hinzufügen will. Es erscheint die Fehlermeldung, dass das Array eine feste Größe hat. Ich habe schon über Google nach Workarounds gesucht und auch einige gefunden, allerdings funktionieren diese nicht (Beispielsweise Array als [System.Collections.ArrayList]). Ich habe sicherlich irgendwo einen Denk-/Codefehler drin, finde diesen aber nicht. Deswegen bin ich für jede Hilfe dankbar.
Ich danke euch schon mal im Voraus.
Mein bisheriger Code:
Output vom bisherigen Code:
Beste Grüße
Ich hoffe ihr habt eine Lösung für mein Problem, ewiges googlen hat mich bisher nicht auf den grünen Zweig gebracht.
Folgendes: zur Datenhaltung möchte ich ein Powershellskript schreiben, dass Informationen, die eingegeben werden können, in einer JSON-Datei ablegt. Bisher funktioniert das Skript auch soweit, dass die Daten in die JSON geschrieben werden, allerdings gibt es Probleme beim Hinzufügen neuer Daten.
Ich habe dazu ein Array, in dem Hashtables gespeichert werden sollen. Bei der ersten Eingabe von Daten funktioniert das. Beim zweiten mal funktioniert das auch, jedoch erstellt es ein neues Array (siehe Output unten). Ich möchte jedoch alle weiteren eingegebenen Daten (sprich BIB2) in das erste erstellte Array (in dem sich BIB1 befindet) hinzufügen, sodass ich später die Möglichkeit zum Auslesen und Ändern der Datensätze habe. Hier kommt jedoch ein Fehler, wenn ich dem Array mit $a.Add() einen neuen Wert hinzufügen will. Es erscheint die Fehlermeldung, dass das Array eine feste Größe hat. Ich habe schon über Google nach Workarounds gesucht und auch einige gefunden, allerdings funktionieren diese nicht (Beispielsweise Array als [System.Collections.ArrayList]). Ich habe sicherlich irgendwo einen Denk-/Codefehler drin, finde diesen aber nicht. Deswegen bin ich für jede Hilfe dankbar.
Ich danke euch schon mal im Voraus.
Mein bisheriger Code:
$BIB = Read-Host 'Bibliothek'
$BIBName = Read-Host 'Bibliothek Name'
$Standort = Read-Host 'Bibliothek Standort'
$Autor = Read-Host 'Buchautor'
$BuchName = Read-Host 'Buchname'
$jsonfile = "C:\Skripte\bib.json"
if(![System.IO.File]::Exists($path)){
$jsonfile
$NewData = @((@{$BIB = @(@{
BIBName=$BIBName;
Standort = $Standort;
Bücher = @(@{
BuchName = $BuchName;
Autor = $Autor
})
})
}))
ConvertTo-Json -Depth 20 -InputObject $NewData | Add-Content $jsonfile
} else {
if ((($NewData = Get-Content $jsonfile | ConvertFrom-Json) | Measure-Object).Count -gt 0) {
$NewData.Add(@{$BIB = @(@{
BIBName=$BIBName;
Standort = $Standort;
Bücher = @(@{
BuchName = $BuchName;
Autor = $Autor
})
})
})
ConvertTo-Json -Depth 20 -InputObject $NewData | Add-Content $jsonfile}
else {
$NewData += (@{$BIB = @(@{
BIBName=$BIBName;
Standort = $Standort;
Bücher = @(@{
BuchName = $BuchName;
Autor = $Autor
})
})
})
ConvertTo-Json -Depth 20 -InputObject $Data | Add-Content $jsonfile
}
}
Output vom bisherigen Code:
[
{
"BIB1": [
{
"BIBName": "Stadtbibliothek",
"Bücher": [
{
"Autor": "Max Meier",
"BuchName": "IT-Handbuch"
}
],
"Standort": "Berlin"
}
]
}
]
[
{
"BIB2": [
{
"BIBName": "Landesbibliothek",
"Bücher": [
{
"Autor": "Peter Müller",
"BuchName": "Cloud"
}
],
"Standort": "Aachen"
}
]
}
]
Beste Grüße
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 367404
Url: https://administrator.de/forum/powershell-array-eine-hashtable-hinzufuegen-367404.html
Ausgedruckt am: 18.07.2025 um 09:07 Uhr
2 Kommentare
Neuester Kommentar