Advertisement
Guest User

New-JsonForZabbix.ps1

a guest
Sep 23rd, 2013
778
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function New-JsonForZabbix
  2. {
  3.     #<#
  4.     #.Synopsis
  5.     #   Генерирует корректный ответ в формате JSON Zabbix low-level discovery
  6.     #.Parameter Objects
  7.     #    Задает массив PSObject для обработки. Обрабатываются только поля типа NoteProperty
  8.     #.Parameter Format
  9.     #    Форматирует отображение для удобного просмотра
  10.     #.Example
  11.     #   $services = Get-Service | Select-Object -Property "Name", "Status"
  12.     #   New-JsonForZabbix -Format $true -Objects $services;
  13.     ##>
  14.     Param
  15.     (
  16.             [Parameter(Mandatory = $True)]
  17.         [PSObject]$Objects,
  18.             [Parameter(Mandatory = $False)]
  19.         [bool]$Format = $false
  20.     )
  21.    
  22.     Process
  23.     {
  24.         $i = 1;
  25.         $j = 1;
  26.         $jsongen =  "";
  27.  
  28.         if ($Format -eq $true)
  29.         {
  30.             $jsongen += "{ `r`n";
  31.             $jsongen += "   `"data`":[ `r`n";
  32.         }
  33.         else
  34.         {
  35.             $jsongen += "{`"data`":[";
  36.         }
  37.         foreach ($item in $Objects)
  38.         {
  39.             $properties = Get-Member -InputObject $item -MemberType NoteProperty;
  40.             if ($Format -eq $true)
  41.             {
  42.                 $jsongen += "`r`n   {   ";
  43.             }
  44.             else
  45.             {
  46.                 $jsongen += "{";
  47.             }
  48.            
  49.             foreach ($property in $properties)
  50.             {
  51.                 if ($Format -eq $true)
  52.                 {
  53.                     $jsongen += "`r`n       " + '"{#' + $property.Name + '}":"' + $item.($property.Name) + '"';
  54.                 }
  55.                 else
  56.                 {
  57.                     $jsongen += '"{#' + $property.Name + '}":"' + $item.($property.Name) + '"';
  58.                 }
  59.                 if ($j -lt $properties.Count)
  60.                 {  
  61.                     $jsongen += ",";
  62.                 }
  63.                 $j++;
  64.                 if ($j -gt $properties.Count)
  65.                 {
  66.                     $j = 1;
  67.                 }
  68.             }
  69.             if ($Format -eq $true)
  70.             {
  71.                 $jsongen += "`r`n   }";
  72.             }
  73.             else
  74.             {
  75.                 $jsongen += "}";
  76.             }
  77.             if ($i -lt $Objects.Count)
  78.             {
  79.                 $jsongen += ",";
  80.             }
  81.             $i++;
  82.         }
  83.         if ($Format -eq $true)
  84.         {
  85.             $jsongen += "`r`n`r`n   ] `r`n}";
  86.         }
  87.         else
  88.         {
  89.             $jsongen += "]}";
  90.         }
  91.         return $jsongen;
  92.     }
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement