PowerShell: Отправить и обработать запрос JSON

Некоторое время назад я написал заметку Эмулировать нажатие на кнопку для Firefox. Напомню, что от меня хотели, чтобы открывалась сразу страница с информацией по серийному номеру источника бесперебойного питания. Моё решение с использованием дополнения Tempermonkey оказалось не совсем удобным, т.к. нужно было ставить всем на компьютер браузер, у которого бы было это дополнение. Поэтому меня попросили реализовать подобное, но через PowerShell (типа его потом интегрируют).

Во-первых, сайт в данном примере является рабочим, а не тестовым, поэтому просьба не использовать его при тестировании!
Во-вторых для работы с JSON наверняка есть более подходящие библиотеки, но для решения данной задачи мне они не потребовались.

 

Ладно, вот что получилось:

ParseJSON.ps1
param (
    [string]$SerialNumber
)

$serialRequest = @{
    Uri             = 'https://ippon.ru/support/help/serial.php'
    SessionVariable = 'Session'
    Method          = 'POST'
    Body            = @{
        serial      = $SerialNumber
    }
}
$JSONResponse = Invoke-WebRequest @serialRequest -UseBasicParsing
$convertedJson = $JSONResponse.Content | ConvertFrom-Json
$JSONResponse.Content | ConvertFrom-Json

######################
# Полное наименование
$fullname = $convertedJson.full_name
Write-Host "Полное наименование: $fullname" -ForegroundColor Green
# Артикул
$model = $convertedJson.model
Write-Host "Артикул: $model" -ForegroundColor Green
# Код
$id = $convertedJson.id
Write-Host "Код: $id" -ForegroundColor Green
# Серийный номер
$serial = $convertedJson.sn
Write-Host "Серийный номер: $serial" -ForegroundColor Green
# Ревизия
$revision = $convertedJson.hardware_revision
Write-Host "Ревизия: $revision" -ForegroundColor Green
# Дата производства
$month = $convertedJson.month
$year = $convertedJson.year
Write-Host "Дата производства: $month $year" -ForegroundColor Green

if ($convertedJson.status -eq "BAD")
{
    $errorMsg=$convertedJson.error
    Write-Host "ERROR: $errorMsg" -ForegroundColor Red -BackgroundColor Black
}
Здесь в конце я добавил правило для отображения информации красным текстом, в случае, если не совпала контрольная сумма (очевидно, при ошибочном указании неверной цифры в серийнике, сервер возвращает результат проверки «BAD», хотя при этом может быть выдана какая-то информация по ИБП).

 

Вывод на экран будет примерно такой (я затёр серийник и некоторые данные звёздочками):

status                   : OK
sn                       : N************
sn_exception             :
imei1                    :
imei2                    :
model                    : SW21000
full_name                : Источник бесперебойного питания Ippon Smart Winner II 1000 900Вт 1000ВА черный
tg_name                  : ИБП Ippon
merlion_name             : Источник бесперебойного питания Ippon Smart Winner II 1000 900Вт 1000ВА черный
id                       : *******
ids                      :
color                    : Black Черный 黑色
color_code               : 0
memory                   :
external_memory          :
hardware_revision        : 1
accessory_set_identifier :
code                     : F
year                     : 2021
month                    : Июль
month_code               : 7
unique_number            : *****
products_id              : *******
it_products_id           : ****
tg                       : ****
ncode                    : N***
tags                     : Ippon Smart Winner II 1000
brand                    : IPPON
codecheck                : Верно
servicecode              : ********
parser_mode              : 4.DigmaSnNewsParser
insp_id                  :

Полное наименование: Источник бесперебойного питания Ippon Smart Winner II 1000 900Вт 1000ВА черный
Артикул: *******
Код: *******
Серийный номер: N*************
Ревизия: 1
Дата производства: Июль 2021

Продолжение следует… :)



Подписаться
Уведомление о
guest
0 Комментарий
Inline Feedbacks
View all comments