Invoke-RestMethod для передачи параметра со значением, которое является хеш-таблицей - PullRequest
0 голосов
/ 28 февраля 2019

Я искал высоко и низко и пробовал разные варианты, но я не могу понять, как это правильно.

Я использую RESTful API, параметр "log_data" и значениеэто хеш-таблица @ {}.Я продолжаю получать сообщение об ошибке от API: «Тело запроса должно быть заполнено параметром тела».

Вот что я пытаюсь:

$JSONHashTable = 
@{
"auto_discovered"= "false"
"coalesce_events"= "true"
"credibility"= 5
"description"= "Type @ SERVERNAME"
"enabled"= "true"
"gateway"= "false"
"group_ids"= @(11111)
"internal"= "true"
"language_id"= 1
"log_extension_id"= 153
"name"= "Type @ SERVERNAME"
"protocol_parameters"= @(
@{
 id= '41040'
 name= "RootDirectory"
 value= "C:\Temp\"
}
@{
 id= '41060'
 name= "MonitoringAlgorithm"
 value= "Continuous Monitoring"
}
@{
 id= '41080'
 name= "OnlyMonitorFilesCreatedToday"
 value= "false"
}
@{
 id= '41100'
 name= "FileReaderPolicy"
 value= "UnicodeLogFile"
}
@{
 id= '41000'
 name= "identifier"
 value= "192.168.8.6"
}
@{
 id= '41005'
 name= "Local_System"
 value= "true"
}
@{
 id= '41050'
 name= "FilenamePattern"
 value= "locallog.*\.txt"
}
@{
 id= '41090'
 name= "FileMonitorPolicy"
 value= "FileMonitorNoFSRedirect"
}
@{
 id= '41120'
 name= "ThrottleTimeout"
 value= "Wi @ SERVERNAME"
}
@{
 id= '41110'
 name= "WinInstanceName"
 value= "5000"
}
)
"protocol_type_id"= 41
"requires_deploy"= "true"
"store_event_payload"= "true"
"target_collector_id"= 235
"type_id"= 39
"win_internal_destination_id"= 14
}

$body = @{"log_data"=$JSONHashTable} | ConvertTo-Json 
$LogRequest = Invoke-RestMethod -Method POST -body $body -Uri $LogURI -Header @{"SEC"= $apiKey }

1 Ответ

0 голосов
/ 28 февраля 2019

Хэш-таблица, которую вы предоставляете для ConvertTo-Json, имеет глубину 3 слоя.По умолчанию ConvertTo-Json будет преобразовывать только первые 2 слоя, поэтому ваше тело не будет полностью преобразовано.Вы можете изменить желаемую глубину вручную:

$body = @{"log_data"=$JSONHashTable} | ConvertTo-Json -Depth 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...