使用Powershell从JSON中选择特定的关键字值

使用Powershell从JSON中选择特定的关键字值,json,powershell,Json,Powershell,您好,我正在尝试从Json中选择一个特定字符串,它将为我提供服务器是否正常的信息。我的PowerShell脚本提供了非预期的空白状态 以下是JSON文件内容: { "AutoScalingGroups": [ { "AutoScalingGroupARN": "arn:aws:autoscaling:eu-west-1:123456789012:autoScalin

您好,我正在尝试从Json中选择一个特定字符串,它将为我提供服务器是否正常的信息。我的PowerShell脚本提供了非预期的空白状态

以下是JSON文件内容:


    {
        "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
            }
        ]
    }

我正在运行下面的命令获取,但无法获得所需的输出

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

HealthStatus : Healthy
我得到的输出:

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

有人能帮我吗。

您需要先将其从JSON转换为PowerShell对象:

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

首先需要将其从JSON转换为PowerShell对象:

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

$abc = Get-Content C:\temp\healthcheck.json | ConvertFrom-Json
$abc.AutoScalingGroups.Instances.HealthStatus
这将给出如下输出:

Healthy
这应该起作用:

$abc = Get-Content C:\temp\healthcheck.json | ConvertFrom-Json
$abc.AutoScalingGroups.Instances.HealthStatus
这将给出如下输出:

Healthy

尝试此获取内容C:\temp\healthcheck.json |选择字符串HealthStatus尝试此获取内容C:\temp\healthcheck.json |选择字符串HealthStatus