Для работы в Powershell с JSON есть несколько командлетов. Посмотреть их можно по команде:
Get-Command -Noun *JSON*
Эти команды доступны с версии PS 5.0. Проверить версию можно так:
host
#или
$PSVersionTable
Для работы с JSON я создал файл по этой ссылке, содержащий эти данные:
{"employee":{"name":"sonoo","salary":[56000, 30000],"married":true}}
Для того что бы получить их, я должен использовать командлет Powershell Invoke-WebRequest (аналог wget). Результат будет помещен в переменную response:
$response = Invoke-WebRequest -Uri "https://fixmypc.ru/json.html"
Т.к. мне нужен только контент страницы, а не весь файл, я должен узнать нужное свойство. Делается это так:
$response | Get-Member
Получить это свойство можно так:
$response.Content
Преобразование с JSON в Powershell ConvertFrom-Json
Для того что бы работать с JSON в Powershell, на примере предыдущих данных, нужно использовать следующей командлет:
ConvertFrom-Json -InputObject $response.Content
Результат этой команды будет объектом и имеет свои свойства и методы. Что бы их увидеть выполните следующее
$json = ConvertFrom-Json -InputObject $response.Content
$json | Get-Member
Т.е. мы видим свойство employee и можем его вызвать:
$json.employee
Если я хочу получить только "name":
$json.employee.Name
Если мне нужно получить первое значение в salary:
$json.employee.Salary[0]
Мы можем получить все данные с JSON и другим путем:
ConvertFrom-Json -InputObject $response.Content | SELECT -ExpandProperty Employee
Преобразование в JSON в Powershell ConvertTo-Json
Если мы хотим преобразовать данные из объекта Powershell в формат JSON, на примере сервисов, нужно сделать следующее:
ConvertTo-Json -InputObject (Get-Service)
Данные будут храниться в типе string.
...
Подписывайтесь на наш Telegram канал
Теги: #powershell