JSON это популярный текстовый формат представления и передачи данных. В PowerShell есть два командлета для работы с форматом данных JSON: ConvertFrom-Json и ConvertTo-Json. В этой статье мы покажем, как создать, прочитать, или изменить JSON объекты и сохранить их в файлы с помощью PowerShell.
Данные в формате JSON представлены в виде пар
ключ
:
значение
(допускается вложение свойств) Допустим, вы хотите записать данные в формате JSON в файл. Создайте объект с данными:
$obj = @{ "Name" = "Dmitriy" "Roles" = @{ "AD" = "Admin" "SQL" = "Report" } "Company" = "winitpro" }
Теперь этот объект нужно преобразовать в формат JSON и сохранить в файл с расширением .json:
$json = $obj | ConvertTo-Json
$json | Set-Content -Path C:\PS\userroles.json
Теперь вы можете прочитать JSON файл:
$json = Get-Content -Path C:\PS\userroles.json -Raw | ConvertFrom-Json
Вы можете вывести все свойства объекта JSON:
$json|fl
Или получить значение определенного свойства в объекте JSON:
$json.roles.sql
Чтобы добавить новое свойство в объект JSON, воспользуйтесь командой Add-Member:
$json| Add-Member -MemberType NoteProperty -Name "Email" -Value "[email protected]"
Чтобы изменить одно значение в объекте JSON и сохранить его в файл, воспользуйтесь такими командами:
$json.roles.sql='Report'
$json|ConvertTo-Json| Set-Content -Path C:\PS\userroles.json
Удалить одно из свойств в JSON объекте:
$json.PSObject.Properties.Remove("Email")
С помощью PowerShell командлета Invoke-WebRequest можно прочитать данные JSON с любого веб сайта. Например, нам нужно найти A записи для определенного сайта, которые возвращает DNS служба Google в формате JSON:
$site="winitpro.ru"
$rawresp=Invoke-WebRequest "https://dns.google/resolve?name=$site&type=A"
$rawjson = ConvertFrom-Json -InputObject $rawresp.Content
$rawjson.answer.data