Я новичок в KQL, изо всех сил пытаюсь проецировать значения внутри целевых ресурсов, но не могу получить требуемые значения. Пожалуйста, помогите мне ниже.
AuditLogs
| where ActivityDisplayName contains "Update user" and InitiatedBy contains "Testuser"
| where TargetResources contains "Id=xxxxxxxx"
хотел спроектировать идентификатор и имя пользователя, которые входят в целевые ресурсы, прикрепленный скриншот ниже ссылки для справки
Образец Json
[{
"id": "xyz",
"displayName": null,
"type": "User",
"userPrincipalName": "ABC",
"modifiedProperties": [{
"displayName": "xxxxxx",
"oldValue": "xxxxx",
"newValue": "yyyyy"
},
{
"displayName": "xxxxx",
"oldValue": "[{xxxx}]",
"newValue": "[{xxxx}]"
},
{
"displayName": "Included Updated Properties",
"oldValue": null,
"newValue": "xxxxx"
},
{
"displayName": "TargetId.UserType",
"oldValue": null,
"newValue": "\"Member\""
}
],
"administrativeUnits": []
}]
если TargetResources
имеет тип string
, вы можете использовать parse_json()
, чтобы сделать его типом dynamic
, а затем получить доступ к его свойствам следующим образом:
| extend TargetResources = parse_json(TargetResources)
| project A = tostring(TargetResources.PropertyA),
B = tolong(TargetResources.PropertyB),
C = TargetResources.PropertyC
если TargetResources
уже имеет тип dynamic
, вы можете просто получить доступ к его свойствам, как показано выше, без необходимости вызывать parse_json
().
соответствующие темы документации:
например:
print input = '{"key1":1, "key2":"value2", "key3":{"key4":4.4}}'
| extend input = parse_json(input)
| project v1 = tolong(input.key1),
v2 = tostring(input.key2),
v4 = todouble(input.key3.key4)
ОБНОВЛЕНИЕ на основе предоставленного образца данных
при работе с массивами вы можете использовать mv-expand или mv-apply для расширения элементов в массивах для дальнейшей обработки.
Примеры:
Примеры:
print TargetResources = dynamic([{
"id": "xyz",
"displayName": null,
"type": "User",
"userPrincipalName": "ABC",
"modifiedProperties": [{
"displayName": "xxxxxx",
"oldValue": "xxxxx",
"newValue": "yyyyy"
},
{
"displayName": "xxxxx",
"oldValue": "[{xxxx}]",
"newValue": "[{xxxx}]"
},
{
"displayName": "Included Updated Properties",
"oldValue": null,
"newValue": "xxxxx"
},
{
"displayName": "TargetId.UserType",
"oldValue": null,
"newValue": "\"Member\""
}
],
"administrativeUnits": []
}])
| mv-expand TargetResources
| project TargetResources.id, TargetResources.userPrincipalName
print TargetResources = dynamic([{
"id": "xyz",
"displayName": null,
"type": "User",
"userPrincipalName": "ABC",
"modifiedProperties": [{
"displayName": "xxxxxx",
"oldValue": "xxxxx",
"newValue": "yyyyy"
},
{
"displayName": "xxxxx",
"oldValue": "[{xxxx}]",
"newValue": "[{xxxx}]"
},
{
"displayName": "Included Updated Properties",
"oldValue": null,
"newValue": "xxxxx"
},
{
"displayName": "TargetId.UserType",
"oldValue": null,
"newValue": "\"Member\""
}
],
"administrativeUnits": []
}])
| mv-expand TargetResources
| mv-expand TargetResources.modifiedProperties
| project TargetResources_modifiedProperties
обновленный образец Json, о котором идет речь, также необходимо получить идентификатор и имя пользователя из приведенного выше json
пожалуйста, смотрите обновление в ответе
Спасибо за быстрый ответ, я изменил запрос с указанными деталями, я получаю вывод как null, но он не отображает строк ibb.co/dmFm2GH