遍历JSON文件的PowerShell循环

4

我该如何遍历JSON文件中的所有项?当前代码只是将所有名称写在一行上:

Get-Content -Raw -Path c:\temp\Environments.Generic.json | ConvertFrom-Json | ForEach-Object {
    Write-Host $_.Name
}

JSON文件:

[
   {
      "Name":"EnableRetry",
      "Description":"Enable retry for Webservice Task",
      "Type":"Boolean",
      "Sensitive":false,
      "Value":true
   },
   {
      "Name":"FolderStageFiles",
      "Description":"Location of stage files",
      "Type":"String",
      "Sensitive":false,
      "Value":"d:\\sources\\"
   },
   {
      "Name":"FtpPassword",
      "Description":"Secret FTP password",
      "Type":"String",
      "Sensitive":true,
      "Value":"Welcome1"
   }
]

1
从 https://dev59.com/HFwX5IYBdhLWcg3wrRE5 复制。 - Micky Balladelli
2个回答

9
我最终使用了 Select-Object 和 ForEach-Object:
$JSON = Get-Content -Raw -Path c:\temp\Environments.Generic.json | ConvertFrom-Json

$JSON | Select-Object -Property Name,Description,Type,Sensitive,Value | ForEach-Object {
    Write-Host $_.Name $_.Value
}

对我来说,这看起来是一个不错的解决方案。很抱歉没有及时回复你。 - Mark Wragg
没问题,我以你的代码为基础,这帮了我很多。我会在几天内在我的博客上发布完整的代码。 - Joost
以下是完整的代码,如果有人想复制它:http://microsoft-ssis.blogspot.com/2017/05/import-and-export-ssis-catalog.html - Joost

2
如果你这样做:
$JSON = Get-Content -Raw -Path c:\temp\Environments.Generic.json | ConvertFrom-Json

$JSON 是一个 PowerShell 对象,其中包含您的 JSON 文件中定义的所有属性的对象集合。

在控制台输入 $JSON,您将看到此对象的内容。

要访问集合中特定项目的特定属性,可以执行以下操作(例如):

$JSON | Where {$_.Name -eq 'FolderStageFiles'} | Select -ExpandProperty Value

有没有什么方法可以循环遍历集合,因为我不知道json文件的值...只知道结构(名称、描述、类型、敏感和值)。 我想循环遍历这些记录,并将这些值添加到SSIS环境中,例如http://microsoft-ssis.blogspot.com/2015/08/deploying-environments-and-variables.html。 - Joost

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接