J'essayais d'exécuter un script qui récupère le fichier JSON du point de terminaison CMS, le transmettre au pipeline pour convertirfrom-json. Mais, j'obtiens une erreur disant primitive JSON invalide.
ConvertFrom-Json: primitive JSON non valide:. Dans D:\AzureProject\SetupusingParameterfile.ps1: 13 char: 75
$JsonContent = Get-Content $TemplateParameterFileLocal -Raw | Conver ...
CategoryInfo: NotSpecified: (:) [ConvertFrom-Json], ArgumentException + FullyQualifiedErrorId: System.ArgumentException, Microsoft.PowerShell.Commands.ConvertFromJsonCommand
La structure de mon fichier de paramètres JSON était conforme à la façon dont la structure du fichier de paramètres Azure doit être et l'échantillon est le suivant: -
{
"$schema": "http://schema.management.Azure.com/schemas/20111-01-01/deploymentParameters.json#",
"contentVersion":"1.0.0.0",
"parameters":
{
"hostingPlanName": {"value": "pilotHosting"},
"hostingEnvironment": {"value": "pilotHostingenv"},
"serverFarmResourceGroup": {"value": "Pilot1H"},
"sqlserverName": {"value": "pilotsrvrtrialrun11"},
"administratorLogin": {"value": "sites1H"},
"administratorLoginPassword": {"value": "abcdefg"},
"serverName": {"value": "Pilotwebserver"},
"databaseUsername": {"value": "pilot1Hattabc"},
"databasePassword": {"value": "pilotdbabc1H"},
}
}
Remarque: Le but de cet article est de partager quelques éléments qui sont survenus lors du projet Azure PoC, et espérons servir quelqu'un plus tard.
Approche 1: -Raw Tentative d'utilisation de -Raw avec Get-Content pour que Get-Content au lieu de lire chaque ligne séparément et de les stocker sous forme de tableau, crée un objet.
$JsonContent = Get-Content $TemplateParameterFileLocal -Raw | ConvertFrom-Json
Approche 2: Out-String Tentative avec Get-Content canalisé vers | Out-String comme ci-dessous:
$JsonContent = Get-Content $TemplateParameterFileLocal | Out-String | ConvertFrom-Json
Examiner JSON avec IDE Enfin, je me suis souvenu de la notification IDE lorsque j'ai ouvert la copie enregistrée du JSON généré par CMS. Il y avait un EOF attendu mais si vous remarquez la structure JSON ci-dessus, elle a obtenu un ',' qui causait ce problème.
J'ai essayé à nouveau l'exécution de -Raw et Out-String, et cela fonctionnait comme prévu.