Convertto- Json из HashTable - PullRequest
       1

Convertto- Json из HashTable

0 голосов
/ 16 января 2020

Мне нужна помощь. Мне нужно экспортировать список сертификатов 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
                                         ]
                        }
}

Как получить данные из переменной Hashtable, например, членов Array в JSON -output? Спасибо.

1 Ответ

2 голосов
/ 16 января 2020

Вам необходимо добавить каждую запись сертификата один за другим:

# 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...