Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function New-JsonForZabbix
- {
- #<#
- #.Synopsis
- # Генерирует корректный ответ в формате JSON Zabbix low-level discovery
- #.Parameter Objects
- # Задает массив PSObject для обработки. Обрабатываются только поля типа NoteProperty
- #.Parameter Format
- # Форматирует отображение для удобного просмотра
- #.Example
- # $services = Get-Service | Select-Object -Property "Name", "Status"
- # New-JsonForZabbix -Format $true -Objects $services;
- ##>
- Param
- (
- [Parameter(Mandatory = $True)]
- [PSObject]$Objects,
- [Parameter(Mandatory = $False)]
- [bool]$Format = $false
- )
- Process
- {
- $i = 1;
- $j = 1;
- $jsongen = "";
- if ($Format -eq $true)
- {
- $jsongen += "{ `r`n";
- $jsongen += " `"data`":[ `r`n";
- }
- else
- {
- $jsongen += "{`"data`":[";
- }
- foreach ($item in $Objects)
- {
- $properties = Get-Member -InputObject $item -MemberType NoteProperty;
- if ($Format -eq $true)
- {
- $jsongen += "`r`n { ";
- }
- else
- {
- $jsongen += "{";
- }
- foreach ($property in $properties)
- {
- if ($Format -eq $true)
- {
- $jsongen += "`r`n " + '"{#' + $property.Name + '}":"' + $item.($property.Name) + '"';
- }
- else
- {
- $jsongen += '"{#' + $property.Name + '}":"' + $item.($property.Name) + '"';
- }
- if ($j -lt $properties.Count)
- {
- $jsongen += ",";
- }
- $j++;
- if ($j -gt $properties.Count)
- {
- $j = 1;
- }
- }
- if ($Format -eq $true)
- {
- $jsongen += "`r`n }";
- }
- else
- {
- $jsongen += "}";
- }
- if ($i -lt $Objects.Count)
- {
- $jsongen += ",";
- }
- $i++;
- }
- if ($Format -eq $true)
- {
- $jsongen += "`r`n`r`n ] `r`n}";
- }
- else
- {
- $jsongen += "]}";
- }
- return $jsongen;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement