我正在使用以下命令检索活动日志
$ActivityLog = Get-AzureRmLog -StartTime $starttime -EndTime $endTime -WarningAction SilentlyContinue -MaxRecord $MaxRecords -Status 'Succeeded'
$Output = $ActivityLog | Where-Object {$_.Authorization.Action -eq 'Microsoft.Resources/deployments/write'}
接下来,我循环检索记录并尝试使用correlationid获取相关记录 - 简化代码如下。
foreach ($record in $output)
{
$record.CorrelationId
if($record.CorrelationId -eq $null -or $record.CorrelationId -eq ''){'error'}
Get-AzureRmLog -CorrelationId $($record.CorrelationId) -WarningAction SilentlyContinue
#EXPECTED this command to show me the original record and any related log entries.
}
在我的情况下,我循环遍历每个活动日志记录,我可以使用上面的脚本验证我有每个记录的有效相关ID。
然而,当我尝试使用Get-AzureRmLog -CorrelationId获取相关记录时,我获得了许多记录的0结果。 我可以理解,某些活动在日志中可能没有多个相关条目。 但是,即使对于这种情况,当我运行Get-AzureRmLog -CorrelationId时,我希望它会返回我们最初从中检索相关ID的单个活动日志条目。
为什么这样的行为?
答案 0 :(得分:1)
相关ID缺失的事件记录可能不会映射到指定日期时间窗口期间的任何事件。 Get-AzureRMlog -CorrelationId“在此处插入相关ID”如果使用有效的相关ID运行,则会在当前日期/时间的最近7天内枚举与指定的相关ID关联的最多1000个事件执行。通常每个相关ID只输出一个事件。
作为测试,我建议您选择一些您期望看到的关联事件的相关ID,并分别在每个ID上运行Get-AzureRMlog并验证事件输出。然后对列表中的相关ID运行相同的测试,没有要比较的事件。如果未列出任何事件,则表示在时间范围内没有与ID关联的事件日志。
此article有一些可能对您的调查有用的用法示例。
按相关ID获取事件日志
PS C:> Get-AzureRmLog -CorrelationId“60c694d0-e46f-4c12-bed1-9b7aef541c23”
此命令最多列出与当前日期/时间7天后发生的指定相关ID关联的1000个事件。注意:这通常只是一个事件。
按相关ID获取事件日志以及最大事件数
PS C:> Get-AzureRmLog -CorrelationId“60c694d0-e46f-4c12-bed1-9b7aef541c23”-MaxEvents 100
此命令最多列出与当前日期/时间7天后发生的指定相关ID关联的100个事件。注意:这通常只是一个事件。
按相关ID和开始时间获取事件日志
PS C:> Get-AzureRmLog -CorrelationId“60c694d0-e46f-4c12-bed1-9b7aef541c23”-StartTime 2017-05-22T04:30:00
如果开始时间不超过当前日期/时间的90天,此命令将列出与在本地时间2017-05-22T04:30:00之间或之后发生的指定相关ID关联的最多1000个事件。注意:这通常只是一个事件。
希望这会有所帮助。 如果您有任何后续问题,请ping。