Powershell output not array type but string type?

0

Hi I'm writing a script to call to AZ migration api

        $siteuri= 'https://management.azure.com/subscriptions/' + $metadata.compute.subscriptionID +'/resourceGroups/' + $AzMigreateResourceGroup+ '/providers/Microsoft.Migrate/migrateProjects/' + $ProjectName + '/solutions/Servers-Discovery-ServerDiscovery?api-version=2018-09-01-preview'
        $siteoutput=(Invoke-RestMethod -Headers $Authtoken -uri $siteuri).properties.details.extendeddetails.applianceNameToSiteIdMapV3

the result I get is this

[
  {
    "lab3dev-app01": {
      "ApplianceName": "xxx",
      "SiteId": "xxx",
      "KeyVaultId": "xxx",
      "KeyVaultUrl": "xxx",
      "ApplianceDetails": {
        "machineID": "xxx",
        "IPAddress": "192.168.50.210",
        "HostName": "WIN-ETP6NTN8B65",
        "isRegistered": true,
        "discoveryStatus": "Success",
        "deepDiscoveryDisabled": false
      },
      "CertificateContents": {
        "xxx": ""
      },
      "AadAppDetails": {
        "TenantID": "xxx",
        "AppName": "xxx",
        "AppID": "xxx",
        "ObjectID": "xxx"
      },
      "ScaleOutList": null,
      "isV2Site": false
    }
  },
  {
    "l3devhyper01": {
      "ApplianceName": "xxx",
      "SiteId": "xxx",
      "KeyVaultId": "xxx",
      "KeyVaultUrl": "xxx",
      "ApplianceDetails": {
        "machineID": "xxx",
        "IPAddress": "192.168.50.143",
        "HostName": "WIN-PKKCDSLE6OD",
        "isRegistered": true,
        "discoveryStatus": "Success",
        "deepDiscoveryDisabled": false
      },
      "CertificateContents": {
        "l3devhyper017a74agentauthcertv2": ""
      },
      "AadAppDetails": {
        "TenantID": "xxx",
        "AppName": "xxx",
        "AppID": "xxx",
        "ObjectID": "xxx"
      },
      "ScaleOutList": null,
      "isV2Site": false
    }
  }
]

I was hoping this can be an array type, so I can do some search, but gettype() tells me this is a string?

is there anyway to output this as array not a string?

azure powershell
2021-11-24 05:17:33
1

1

Invoke-RestMethod does return a Object, you're even using it to access a particular property. You'd need to have a look at the API description to see whenever it's just a string attribute (as that might be the case).

As you can see from that string that it is a JSON object you could use ConvertFrom-Json to turn it into an object.

The easiest case without additional error handling would be:

$siteoutput = Invoke-RestMethod -Headers $Authtoken -uri $siteuri
$siteoutput = $siteoutput.properties.details.extendeddetails.applianceNameToSiteIdMapV3 | ConvertFrom-Json
2021-11-24 07:03:22

In other languages

This page is in other languages

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................