Not sure what I am doing wrong, but when copying a PSCustomObject in Powershell to an array element, this is copied by reference. See this:
$body = [PSCustomObject]@{
albumId = $album_id;
newMediaItems = [PSCustomObject]@()
}
$mediaItem = [PSCustomObject]@{
description = "";
simpleMediaItem = [PSCustomObject]@{
fileName = "";
uploadToken = "";
}
}
$mediaItem.description = "Friend of Mickey Mouse"
$mediaItem.simpleMediaItem.fileName = "Goofy.txt"
$mediaItem.simpleMediaItem.uploadToken = "1111"
$body.newMediaItems += $mediaItem.PsObject.Copy()
$mediaItem.description = "Friend of Rocker Duck"
$mediaItem.simpleMediaItem.fileName = "Donald Duck.txt"
$mediaItem.simpleMediaItem.uploadToken = "2222"
$body.newMediaItems += $mediaItem.PsObject.Copy()
$body | ConvertTo-Json -depth 4
Output:
{
"albumId": null,
"newMediaItems": [
{
"description": "Friend of Mickey Mouse",
"simpleMediaItem": {
"fileName": "Donald Duck.txt",
"uploadToken": "2222"
}
},
{
"description": "Friend of Rocker Duck",
"simpleMediaItem": {
"fileName": "Donald Duck.txt",
"uploadToken": "2222"
}
}
]
}