Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Powershell从AWS JSON提取一些字段_Json_Powershell - Fatal编程技术网

使用Powershell从AWS JSON提取一些字段

使用Powershell从AWS JSON提取一些字段,json,powershell,Json,Powershell,既然Powershell是开源和跨平台的(带有Powershell核心),我想我应该再试一次 我在过去使用过,并且在某个时候已经了解了管道是如何工作的,但它不是超直观的。应该是,但不是,所以我有点被卡住了 手头的任务:解析并打印命令JSON输出中的几个字段。我可能可以用老式的方式,使用外部命令和字符串处理,就像bash一样,但是我想学习如何用Powershell的方式™. 为了澄清,我想以互动的方式,在管道中进行。我不想编写脚本,我想学习如何在一行程序(最多2行,但基本上是将Powershell

既然Powershell是开源和跨平台的(带有Powershell核心),我想我应该再试一次

我在过去使用过,并且在某个时候已经了解了管道是如何工作的,但它不是超直观的。应该是,但不是,所以我有点被卡住了

手头的任务:解析并打印命令JSON输出中的几个字段。我可能可以用老式的方式,使用外部命令和字符串处理,就像bash一样,但是我想学习如何用Powershell的方式™.

为了澄清,我想以互动的方式,在管道中进行。我不想编写脚本,我想学习如何在一行程序(最多2行,但基本上是将Powershell用作REPL,而不是脚本工具)中进行此类处理

Bash命令:
aws cloudformation描述堆栈事件——堆栈名称此处为一些堆栈| jq“。StackEvents[].[Timestamp、.ResourceStatus、.ResourceType、.ResourceStatusReason]| join(\“\”)”

这样做的目的是获取输入JSON并只打印我感兴趣的3个字段

输入JSON: 命令输出: (我认为这应该是关于Stackoverflow的,因为本主题涉及到对Powershell概念的非常深入的理解,包括.NET对象,更接近于编程而不是系统管理,例如超级用户等等。)

您可以:

$j = aws cloudformation describe-stack-events --stack-name some-stack-here | ConvertFrom-Json
$j.StackEvents | % { "{0} {1} {2}" -f $_.Timestamp, $_.Resourcestatus, $_.ResourceType }
使用
ConvertFrom-Json
cmdlet将命令结果存储到powershell对象中,然后您可以选择
StackEvents
数组并将其循环以选择所需的值

如果您想在一行中完成此操作:

(aws cloudformation describe-stack-events --stack-name some-stack-here | ConvertFrom-Json).StackEvents | %
{ "{0} {1} {2}" -f $_.Timestamp, $_.Resourcestatus, $_.ResourceType }
你可以做:

$j = aws cloudformation describe-stack-events --stack-name some-stack-here | ConvertFrom-Json
$j.StackEvents | % { "{0} {1} {2}" -f $_.Timestamp, $_.Resourcestatus, $_.ResourceType }
使用
ConvertFrom-Json
cmdlet将命令结果存储到powershell对象中,然后您可以选择
StackEvents
数组并将其循环以选择所需的值

如果您想在一行中完成此操作:

(aws cloudformation describe-stack-events --stack-name some-stack-here | ConvertFrom-Json).StackEvents | %
{ "{0} {1} {2}" -f $_.Timestamp, $_.Resourcestatus, $_.ResourceType }

太棒了,这就是我想要的。我知道%是foreach,但允许访问对象的语言功能是什么?我的意思是,{0},-f等等。我不知道谷歌和Powershell的在线文档有点稀疏/不太清楚。(好的,找到了,它是-f aka格式操作符:)。很酷,非常感谢,这就是我错过的!太棒了,这就是我想要的。我知道%是foreach,但允许访问对象的语言功能是什么?我的意思是,{0},-f等等。我不知道谷歌和Powershell的在线文档有点稀疏/不太清楚。(好的,找到了,它是-f aka格式操作符:)。很酷,非常感谢,这就是我错过的!