Добрый день.
Хочу настроить возможность получать данные из ES через powershell. В моем случае это поиск по логу Exchange. Вижу это так: администратор запускает скрипт, вводит в переменные отправителя, получателя, дату и тему и получает результат в более-менее красивом формате. Скрипт у меня получился такой
$sender=Read-Host "Enter sender address"
#$recipient=Read-Host "Enter recipient address"
#$subject=Read-Host "Enter subject"
$json_body = '{
"query": {
"bool": {
"must": [
{
"range": {
"@timestamp": {
"gte": "now-1d/d",
"lte": "now/d"
}
}
}
],
"should": [
{
"match": {
"sender-address": "`"$sender`""
}
},
{
"match": {
"recipient-address": "*"
}
},
{
"match_phrase": {
"message-subject": "*"
}
}
]
}
}
}'
$result= Invoke-RestMethod -URI 'http://1.1.5.5:9200/exchange-*/_search?pretty' -Method 'POST' -ContentType 'application/json' -Body $json_body
$result.hits.hits._source | fl message-subject, sender-address, recipient-address, '@timestamp', source-context, event-id
Без использования переменных всё круто, но с переменными получаю такую ошибку:
Invoke-RestMethod : { "error" : { "root_cause" : [ { "type" : "json_parse_exception", "reason" : "Unexpected character ('$' (code 36)): was expecting comma to separate Object entries\n at
[Source: org.elasticsearch.transport.netty4.ByteBufStreamInput@4345e084; line: 17, column: 36]" } ], "type" : "json_parse_exception", "reason" : "Unexpected character ('$' (code 36)): was
expecting comma to separate Object entries\n at [Source: org.elasticsearch.transport.netty4.ByteBufStreamInput@4345e084; line: 17, column: 36]" }, "status" : 500 }
At line:39 char:10
+ $result= Invoke-RestMethod -URI 'http://1.1.5.5:9200/exchange-*/_search?pret ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand
Вообще возможно передавать переменные в таких запросах?