从哈希表转换为Json

从哈希表转换为Json,json,powershell,Json,Powershell,我需要一些帮助。 我需要以下一种格式将IIS证书列表导出到json: { "Certificate.FriendlyName1":{ "daysleft":"33" }, "Certificate.FriendlyName2":{ "daysleft":"67" }, "Certificate.FriendlyName3":{ "daysleft":"12" } } 现在我尝试使用下一个代码: $sites = Get-Website | ? {

我需要一些帮助。 我需要以下一种格式将IIS证书列表导出到json:

{
  "Certificate.FriendlyName1":{
    "daysleft":"33"
  },
  "Certificate.FriendlyName2":{
    "daysleft":"67"
  },
  "Certificate.FriendlyName3":{
    "daysleft":"12"
  }
}
现在我尝试使用下一个代码:

$sites = Get-Website | ? { $_.State -eq "Started" } | % { $_.Name }
$certs = Get-ChildItem IIS:SSLBindings | ? {
           $sites -contains $_.Sites.Value
         } | % { $_.Thumbprint }

$certificate = Get-ChildItem CERT:LocalMachine/My | ? {
  $certs -contains $_.Thumbprint
}
   $data = [PsCustomObject]@{

    $certificate.FriendlyName     = @{
                               daysleft = ($certificate.NotAfter).subtract([DateTime]::Now).days}
   }

Convertto-json $data
但是获得下一个输出

{
    "System.Object[]":  {
                            "daysleft":  [
                                             1775,
                                             574
                                         ]
                        }
}

如何从JSON输出中的哈希表变量(如数组成员)中获取数据?谢谢。

您需要逐个添加每个证书条目:

# grab the matching certificates
$certificates = Get-ChildItem CERT:LocalMachine/My | ? {
  $certs -contains $_.Thumbprint
}

# create hashtable to hold the data
$data = @{}

foreach($certificate in $certificates){
    # add each cert one by one
    $data[$certificate.FriendlyName] = @{
        daysleft = $certificate.NotAfter.Subtract([DateTime]::Now).days
    }
}

ConvertTo-Json $data

您需要逐个添加每个证书条目:

# grab the matching certificates
$certificates = Get-ChildItem CERT:LocalMachine/My | ? {
  $certs -contains $_.Thumbprint
}

# create hashtable to hold the data
$data = @{}

foreach($certificate in $certificates){
    # add each cert one by one
    $data[$certificate.FriendlyName] = @{
        daysleft = $certificate.NotAfter.Subtract([DateTime]::Now).days
    }
}

ConvertTo-Json $data

非常感谢。这就是我需要的,谢谢。这就是我需要的。