Некоторое время назад я написал заметку Эмулировать нажатие на кнопку для Firefox. Напомню, что от меня хотели, чтобы открывалась сразу страница с информацией по серийному номеру источника бесперебойного питания. Моё решение с использованием дополнения Tempermonkey оказалось не совсем удобным, т.к. нужно было ставить всем на компьютер браузер, у которого бы было это дополнение. Поэтому меня попросили реализовать подобное, но через PowerShell (типа его потом интегрируют).
Во-первых, сайт в данном примере является рабочим, а не тестовым, поэтому просьба не использовать его при тестировании!
Во-вторых для работы с JSON наверняка есть более подходящие библиотеки, но для решения данной задачи мне они не потребовались.
Во-вторых для работы с 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
Продолжение следует… :)
DenTNT недавно публиковал (посмотреть все)
- C#: Сравнить два массива - 12.12.2024
- EVE-Online: Фильтры каналов - 23.11.2024
- Не приходит СМС для авторизации на сайте Госуслуги - 01.11.2024