my runscript.yml:
parameters:
agentPool: ''
agentImage: ''
jobs:
- job: runscript
displayName: runscript
pool:
name: '${{ parameters.agentPool }}'
vmImage: '${{ parameters.agentImage }}'
steps:
- task: AzurePowerShell@4
displayName: 'Azure PowerShell'
inputs:
azureSubscription: 'dops'
ScriptPath: 'scripts/Test-JSON'
ScriptArguments: '-jsonPath "$(System.DefaultWorkingDirectory)/json/test.json"'
azurePowerShellVersion: LatestVersion
My test.json:
[
{
"DisplayName": "Best from best",
"gnm": {
"shoessing": [
{
"mime": [
{
"id": "262364362673",
"key": ""
}
]
}
]
}
}
{
"DisplayName": "Trying to be best",
"gnm": {
"shoessing": [
{
"mime": [
{
"id": "262364362673",
"key": ""
},
{
"id": "AAAAAAAAA",
"key": ""
}
]
}
]
}
}
]
Test-JSON.ps1:
param (
[string]$jsonPath
)
function Test-JSON {
param (
[string]$File
)
$long = "mime"
$json = Get-Content $file | ConvertFrom-Json
for ($i = 0; $i -lt $json.Count; $i++) {
foreach ($gnm in $json[$i].gnm) {
$shoessing = $gnm.shoessing.$long
Write-Output "shoessing count: $($shoessing.Count)"
}
}
}
Test-JSON -File $jsonPath
When I run the script with that Azure DevOps task with that json as input I get output:
shoessing count:
shoessing count: 2
But when I run this script locally I get:
shoessing count: 1
shoessing count: 2
I made this fairly simple powershell to identify the problem I have with another script. It works fine in my local setup Windows 10 + Powershell. How I can make the powershell in Azure DevOps pipelines to identify single item json array correctly? The powershell in Azure DevOps task does not take depth as variable.
,between the two top-level array elements