Полезно будет сделать пример работы с JSON в powershell. Как получить данные из JSON и внести соответственно.
PowerShell JSON
Re: ps JSON
Wake up, Neo, select all
# перевести число в текст
Clear-Host
$number = "1234567"
$result = Invoke-RestMethod ("https://htmlweb.ru/json/convert/num2str?num="+$number)
Write-Host $result
Write-Host "Осталось бесплатных запросов: $($result.limit)"
Write-Host "Результат запроса: $($result.str)"
- Fors1k
- Администратор
- Сообщения: 57
- Зарегистрирован: 08 июн 2021, 17:23
- Благодарил (а): 4 раза
- Поблагодарили: 3 раза
Re: ps JSON
JSON - это как массив хеш-таблиц.
Cirus показал хороший пример для веб-запроса. Invoke-RestMethod
умеет сразу парсить JSON из ответа.
Вот еще несколько примеров.
Создать JSON файл
Wake up, Neo, select all
# Путь, по которому будем сохранять файл
$path = "D:\files\clients.json"
# Создать коллекцию
$data = [Collections.ArrayList]::new()
for($i = 1; $i -le 1000; $i++){
# Создать клиента
$client = @{
name = "Client_$i"
money = Get-Random -Maximum 5000
age = Get-Random -Minimum 18 -Maximum 65
address = @{
country = "Russia"
city = "Moscow"
}
}
# Добавить клиента в коллекцию
$data.Add($client)|Out-Null
}
# Конвертировать коллекцию клиентов в Json формат
$json = $data|ConvertTo-Json
# Записать в файл
Set-Content $path $json
Прочитать данные из JSON файла
Wake up, Neo, select all
# Путь к файлу
$path = "D:\files\clients.json"
# Прочитать данные из JSON файла
$clients = Get-Content -raw $path | ConvertFrom-Json
# Показать клиентов, у которых баланс больше, чем 4900
$clients|Where-Object{$_.money -gt 4900}
# Показать клиентов, у которых на счету более 4900 в графическом интерфейсе
$clients|Where-Object{$_.money -gt 4900}|Out-GridView
- Fors1k
- Администратор
- Сообщения: 57
- Зарегистрирован: 08 июн 2021, 17:23
- Благодарил (а): 4 раза
- Поблагодарили: 3 раза
Re: ps JSON
Также можно конвертировать в JSON готовые объекты:
Wake up, Neo, select all
$path = "D:\files\VersionInfo.json"
# Получить информацию о файле
$file = Get-Item "$pshome\powershell.exe"
# Конвертировать информацию о версии в JSON формат
$json = $file.VersionInfo|ConvertTo-Json
# Сохранить JSON данные
Set-Content $path $json
Вот таким получится JSON файл:
VersionInfo.json
Код: Выделить всё
{
"Comments": "",
"CompanyName": "Microsoft Corporation",
"FileBuildPart": 19041,
"FileDescription": "Windows PowerShell",
"FileMajorPart": 10,
"FileMinorPart": 0,
"FileName": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
"FilePrivatePart": 546,
"FileVersion": "10.0.19041.1 (WinBuild.160101.0800)",
"InternalName": "POWERSHELL",
"IsDebug": false,
"IsPatched": false,
"IsPrivateBuild": false,
"IsPreRelease": false,
"IsSpecialBuild": false,
"Language": "Русский (Россия)",
"LegalCopyright": "© Корпорация Майкрософт. Все права защищены.",
"LegalTrademarks": "",
"OriginalFilename": "PowerShell.EXE.MUI",
"PrivateBuild": "",
"ProductBuildPart": 19041,
"ProductMajorPart": 10,
"ProductMinorPart": 0,
"ProductName": "Операционная система Microsoft® Windows®",
"ProductPrivatePart": 546,
"ProductVersion": "10.0.19041.1",
"SpecialBuild": "",
"FileVersionRaw": {
"Major": 10,
"Minor": 0,
"Build": 19041,
"Revision": 546,
"MajorRevision": 0,
"MinorRevision": 546
},
"ProductVersionRaw": {
"Major": 10,
"Minor": 0,
"Build": 19041,
"Revision": 546,
"MajorRevision": 0,
"MinorRevision": 546
}
}
Кто сейчас на конференции
Сейчас этот форум просматривают: agrohimmst и 1 гость