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