Kusto KQL ссылается на первый объект в массиве JSON - PullRequest
0 голосов
/ 28 января 2020

Мне нужно получить значение первой записи в массиве json с помощью Kusto KQL в Microsoft Defender ATP.

Формат данных выглядит так (анонимно), и мне нужно значение " UserName ":

[{"UserName":"xyz","DomainName":"xyz","Sid":"xyz"}]

Как разделить или каким-либо другим способом получить значение" UserName "?

Ответы [ 3 ]

0 голосов
/ 05 февраля 2020

спасибо за ответ, но предложенное решение не сработало для меня. Однако вместо этого я нашел следующее решение:

project substring(split(split(LoggedOnUsers,',',0),'"',4),2,9)

Вывод этого: UserName

0 голосов
/ 14 апреля 2020

В WDATP / MSTAP для массивов типа «LoggedOnUsers» требуется «mv-expand» (многозначное расширение) в сочетании с «parse json».

»parse json "превратит строку в JSON, а mv-expand развернет ее в LoggedOnUsers.Username, LoggedOnUsers.DomainName и LoggedOnUsers.Sid:

DeviceInfo 
| mv-expand parsejson(LoggedOnUsers)
| project DeviceName, LoggedOnUsers.UserName, LoggedOnUsers.DomainName

Имейте в виду, что если упакованное поле имеет если несколько записей (как это часто бывает в поле IPAddresses в DeviceNetworkInfo), вся строка будет раскрываться один раз для каждой записи, поэтому строка для компьютера с 3 записями в «IPAddresses» будет дублироваться 3 раза при каждом различном расширении IpAddresses:

DeviceNetworkInfo 
| where Timestamp > ago(1h)
| mv-expand parsejson(IPAddresses)
| project DeviceName, IPAddresses.IPAddress
0 голосов
/ 28 января 2020

для доступа к свойству UserName первой записи вы можете сделать следующее:

print d = dynamic([{"UserName":"xyz","DomainName":"xyz","Sid":"xyz"}])
| extend result = d[0].UserName

, чтобы получить UserName для всех записей, вы можете использовать mv-expand / mv-apply:

print d = dynamic([{"UserName":"xyz","DomainName":"xyz","Sid":"xyz"}])
| mv-apply d on (
    project d.UserName
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...