Manish Parida
Manish Parida

Reputation: 63

Select a Particular keyword value from JSON using Powershell

Hi I am trying to select a particular string from a Json which will provide me the server is healthy or Unhealthy. My PowerShell script is giving blank status which is not expected

Here's JSON file content:


    {
        "AutoScalingGroups": [
            {
                "AutoScalingGroupARN": "arn:aws:autoscaling:eu-west-1:123456789012:autoScalingGroup:bd627251-3d9c-4f2e-8a67-a66d6ae8cd74:autoScalingGroupName/abc-autoscaling20201215202342164100000001", 
                "ServiceLinkedRoleARN": "arn:aws:iam::123456789012:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling", 
                "TargetGroupARNs": [
                    "arn:aws:elasticloadbalancing:eu-west-1:123456789012:targetgroup/target-group/e89a8e04bc11e7bb"
                ], 
                "SuspendedProcesses": [], 
                "DesiredCapacity": 1, 
                "Tags": [
                    {
                        "ResourceType": "auto-scaling-group", 
                        "ResourceId": "abc-autoscaling20201215202342164100000001", 
                        "PropagateAtLaunch": true, 
                        "Value": "sit", 
                        "Key": "BranchName"
                    }, 
                    {
                        "ResourceType": "auto-scaling-group", 
                        "ResourceId": "abc-autoscaling20201215202342164100000001", 
                        "PropagateAtLaunch": true, 
                        "Value": "abc-autoscaling", 
                        "Key": "Name"
                    }, 
                    {
                        "ResourceType": "auto-scaling-group", 
                        "ResourceId": "abc-autoscaling20201215202342164100000001", 
                        "PropagateAtLaunch": true, 
                        "Value": "manish", 
                        "Key": "Owner"
                    },  
                    {
                        "ResourceType": "auto-scaling-group", 
                        "ResourceId": "abc-autoscaling20201215202342164100000001", 
                        "PropagateAtLaunch": true, 
                        "Value": "online", 
                        "Key": "role"
                    }, 
                    {
                        "ResourceType": "auto-scaling-group", 
                        "ResourceId": "abc-autoscaling20201215202342164100000001", 
                        "PropagateAtLaunch": true, 
                        "Value": "Online-Group", 
                        "Key": "team"
                    }
                ], 
                "EnabledMetrics": [
                    {
                        "Metric": "GroupInServiceInstances", 
                        "Granularity": "1Minute"
                    }, 
                    {
                        "Metric": "GroupStandbyInstances", 
                        "Granularity": "1Minute"
                    }, 
                    {
                        "Metric": "GroupMinSize", 
                        "Granularity": "1Minute"
                    }, 
                    {
                        "Metric": "GroupDesiredCapacity", 
                        "Granularity": "1Minute"
                    }, 
                    {
                        "Metric": "GroupMaxSize", 
                        "Granularity": "1Minute"
                    }, 
                    {
                        "Metric": "GroupPendingInstances", 
                        "Granularity": "1Minute"
                    }, 
                    {
                        "Metric": "GroupTerminatingInstances", 
                        "Granularity": "1Minute"
                    }, 
                    {
                        "Metric": "GroupTotalInstances", 
                        "Granularity": "1Minute"
                    }
                ], 
                "LoadBalancerNames": [], 
                "AutoScalingGroupName": "abc-autoscaling20201215202342164100000001", 
                "DefaultCooldown": 300, 
                "MinSize": 1, 
                "Instances": [
                    {
                        "ProtectedFromScaleIn": false, 
                        "AvailabilityZone": "eu-west-1b", 
                        "InstanceId": "i-0b180f050533a6067", 
                        "HealthStatus": "Healthy", 
                        "LifecycleState": "InService", 
                        "LaunchConfigurationName": "abc-autoscaling20201215202342164100000001", 
                        "InstanceType": "t3.large"
                    }
                ], 
                "MaxSize": 1, 
                "VPCZoneIdentifier": "subnet-a57b84fe,subnet-2c00b865", 
                "HealthCheckGracePeriod": 1800, 
                "TerminationPolicies": [
                    "Default"
                ], 
                "LaunchConfigurationName": "abc-autoscaling20201215202342164100000001", 
                "CreatedTime": "2020-12-15T20:23:42.952Z", 
                "AvailabilityZones": [
                    "eu-west-1b", 
                    "eu-west-1a"
                ], 
                "HealthCheckType": "ELB", 
                "NewInstancesProtectedFromScaleIn": false
            }
        ]
    }

I am running the below command to fetch but not able to get the desired output

$abc = Get-Content C:\temp\healthcheck.json | Select AutoScalingGroups.Instances.HealthStatus

Expected Output:

HealthStatus : Healthy

Output I got:

AutoScalingGroups.Instances.HealthStatus
----------------------------------------

Can anyone help me in this.

Upvotes: 2

Views: 1153

Answers (2)

Piyush Patil
Piyush Patil

Reputation: 55

This should work:

$abc = Get-Content C:\temp\healthcheck.json | ConvertFrom-Json
$abc.AutoScalingGroups.Instances.HealthStatus

This will give the output as:

Healthy

Upvotes: 1

Robert Dyjas
Robert Dyjas

Reputation: 5227

You need to convert it from JSON to PowerShell object first:

$abc = Get-Content C:\temp\healthcheck.json | ConvertFrom-Json |
Select-Object @{n='HealthStatus';e={$_.AutoScalingGroups.Instances.HealthStatus}}

Upvotes: 2

Related Questions