【问题标题】:Looping through JSON file with PowerShell使用 PowerShell 循环遍历 JSON 文件
【发布时间】:2017-05-07 21:51:34
【问题描述】:

如何遍历 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"
   }
]

【问题讨论】:

标签: json powershell


【解决方案1】:

我最终得到了 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
}

【讨论】:

  • 对我来说似乎是一个很好的解决方案。很抱歉没有回复您。
  • 没问题,我以您的代码为基础,这对我有帮助...几天后将在我的博客上发布完整的代码。
  • 如果有人想复制,这里是完整的代码:microsoft-ssis.blogspot.com/2017/05/…
【解决方案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 环境中,例如 microsoft-ssis.blogspot.com/2015/08/…
猜你喜欢
  • 2013-10-24
  • 1970-01-01
  • 1970-01-01
  • 2018-01-15
  • 1970-01-01
  • 2022-12-10
  • 1970-01-01
  • 2016-02-04
  • 1970-01-01
相关资源
最近更新 更多