Я пытаюсь подключиться к нашему McAfee ESM с помощью вызова API PowerShell.
API требует, чтобы параметры были переданы ему в форме JSON.Я пытался использовать командлет PowerShell ConvertTo-Json с хэшем, и я также пытался использовать только прямой текст JSON.
$headers = @{
'Content-Type' = 'application/json'
'Accept' = 'application/json'
}
$body_json = {"datasource": {
"parentId": "123456789000",
"name": "(name)",
"id": "(value)",
"typeId": 0,
"childEnabled": false,
"childCount": 0,
"childType": 0,
"ipAddress": "(ipAddress)",
"zoneId": 0,
"url": "(url)",
"enabled": false,
"idmId": 123456789000,
"parameters": [{
"key": "(key)",
"value": "(value)"
}]
}}
$body_json_converted = @{
datasource = @(
@{
parentId = 123456789000
name = "name"
id = "value"
typeId = 0
childEnabled = $false
childCount = 0
childType = 0
ipAddress = "ipAddress"
zoneId = 0
url = "url"
enabled = $false
idmId = 123456789000
parameters = @( @{
key = "key"
value = "value"
})
})
} | ConvertTo-Json -Depth 4
Invoke-RestMethod $url -Body $body_json_converted -Method Post -Headers $headers
Invoke-WebRequest $url -Body $body_json -Method Post -Headers $headers
Я ожидаю получить результат обратно, сообщив, что он успешно созданисточник данных или сказать мне, что мне не хватает какого-то параметра.На самом деле я получаю
Invoke-RestMethod: Невозможно десериализовать экземпляр [ERROR] 'com.mcafee.siem.api.data.datasource.EsmDataSourceDetail' из START_ARRAY [ERROR] токена
Похоже, что это почти идентичная проблема для этого пользователя:
Powershell Invoke-Webrequest с JSON Body - Невозможно десериализовать ...? , нопользователь не объясняет, как он / она это исправил.
Редактировать: McAfee ESM имеет страницу справки API для конкретного вызова API для добавления источника данных.Все остальные вызовы API задокументированы одинаково.Вот большая часть содержимого из него:
Описание Добавить источник данных.
Параметры Тип источника данных: EsmDataSourceDetail Описание: источник данных для добавления Возвращаемое значение (возвращен корневой элемент JSON "return")Тип: EsmDataSourceId Описание: идентификатор источника данных только что добавленного источника данных Пример вызова REST (с JSON, если применимо) https://siem/rs/esm/dsAddDataSource
Пример содержимого JSON:
{"datasource": {
"parentId": {"id": 123456789000},
"name": "(name)",
"id": {"id": "(id)"},
"typeId": {"id": 0},
"childEnabled": false,
"childCount": 0,
"childType": 0,
"ipAddress": "(ipAddress)",
"zoneId": 0,
"url": "(url)",
"enabled": false,
"idmId": 123456789000,
"parameters": [{
"key": "(key)",
"value": "(value)"
}]
}}