PowerShell JSON

Ответить
Аватара пользователя
Madeus
Сообщения: 3
Зарегистрирован: 02 июл 2021, 16:19

PowerShell JSON

Сообщение Madeus »

Полезно будет сделать пример работы с JSON в powershell. Как получить данные из JSON и внести соответственно.

Аватара пользователя
cirus
Expert
Сообщения: 56
Зарегистрирован: 12 июн 2021, 17:53
Поблагодарили: 8 раз

Re: ps JSON

Сообщение cirus »

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

Сообщение Fors1k »

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

Сообщение Fors1k »

Также можно конвертировать в 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
                          }
}
Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: maximllkn и 4 гостя