let - 使用 KQL 'let' 在同一个表中组合两个查询
问题描述
我正在尝试学习 KQL,并有一个查询,我想从 Windows 事件代码 4624(登录)和 4634(注销)中获取 2 个值,并将它们返回给我仍在尝试构建的不同场景。
但主要是我希望能够返回表中的值(打印或项目?)
let login = SecurityEvent
| where TimeGenerated > ago(1h)
| where EventID == '4624'
| project loginTime = TimeGenerated;
let logout = SecurityEvent
| where TimeGenerated > ago(1h)
| where EventID == '4634'
| project logoutTime = TimeGenerated;
print login
我得到的错误是“'project' operator: Failed to resolve scalar expression named 'login'”
我希望看到的是:
loginTime | logoutTime
----------------------------------------------
01/02/2021 18:46:30 | 01/02/2021 18:45:45
01/02/2021 18:47:30 | 01/02/2021 18:47:45
01/02/2021 18:48:30 | 01/02/2021 18:48:45
加入会更好吗?它在同一张表中(SecurityEvent),所以我认为可以这样做吗?
数据集来自 MS 提供的 Azure 门户:https ://portal.azure.com/#blade/Microsoft_Azure_Monitoring_Logs/DemoLogsBlade
谢谢您的帮助!
解决方案
问题是“登录”是一种表类型,但print
需要一个标量类型。
let login = SecurityEvent
| where TimeGenerated > ago(1h)
| where EventID == '4624'
| project loginTime = TimeGenerated;
let logout = SecurityEvent
| where TimeGenerated > ago(1h)
| where EventID == '4634'
| project logoutTime = TimeGenerated;
print toscalar (login)
至于你想要得到的结果,我认为这可能是你需要的:
更新以提高清晰度/性能
let login = SecurityEvent
| where TimeGenerated > ago(1h)
| where EventID == '4624'
| project TargetLogonId, loginTime = TimeGenerated;
let logout = SecurityEvent
| where TimeGenerated > ago(1h)
| where EventID == '4634'
| project TargetLogonId, logoutTime = TimeGenerated;
login
| join kind=leftouter logout on TargetLogonId
| project loginTime, logoutTime
推荐阅读
- ffmpeg - ffmpeg - TS 文件的音频问题
- python - Tkinter:当我在按住按钮的框架旁边创建一个框架时,按钮会上下跳跃
- sql-server - 表索引的扩展属性上的 SSIS 传输 SQL Server 对象错误
- webpack - LitElement 和 Webpack - 如何加载 Web 组件?
- r - 将自定义函数应用于数据框中的每一行
- sharepoint - Sharepoint 图形浏览器 API 的 WYSIWYG
- grep - 如何使用正则表达式在文件中搜索匹配的子字符串并仅返回子字符串?
- python - 在 tkinter 窗口中运行函数时显示简单的加载动画
- ios - RNIap.getPurchaseHistory() 在 iOS 上总是返回一个空数组
- java - 如何处理 RabbitMQ 中未知/无效的绑定路由键值?