You need to enable JavaScript to run this app. 查询最近10分钟创建的Azure VM脚本运行结果异常求助
优惠活动
大模型
产品
解决方案
定价
更多

查询最近10分钟创建的Azure VM脚本运行结果异常求助

问题核心错误点

  • 第一:时间比较逻辑写反
    你定义的$time = (Get-Date).AddMinutes(-10)是10分钟前的时间点,要筛选10分钟内创建的VM,应该满足创建时间晚于这个时间点,也就是$VMCreatedDate -gt $time才是符合要求的结果,你的代码把判断条件搞反了,自然会把更早创建的VM判定为符合条件的结果。
  • 第二:时区不匹配导致时间对比错误
    Azure返回的磁盘TimeCreated属性是UTC标准时间,而Get-Date默认获取的是你当前运行环境的本地时间,两者时区不一致会直接导致时间对比完全错误,这就是你会筛选到1小时前创建的VM的核心原因。

修正后的代码

$VMObject = Get-AzVM -ResourceGroupName "vmtest"
$minutes = 10
# 统一使用UTC时间做对比,避免时区偏差
$utcThresholdTime = (Get-Date).ToUniversalTime().AddMinutes(-$minutes)

foreach ($VM in $VMObject)
{
    $VMDiskName = $VM.StorageProfile.OsDisk.Name
    $VMDiskInfo = Get-AzDisk -ResourceGroupName $VM.ResourceGroupName -DiskName $VMDiskName
    $VMCreatedDate = $VMDiskInfo.TimeCreated

    if ($VMCreatedDate -ge $utcThresholdTime)
    {
        Write-Output "$($vm.name) 符合要求,创建时间:$VMCreatedDate"
    }
    else
    {
        Write-Output "$($vm.name) 超出时间范围,创建时间:$VMCreatedDate" 
    }
}

额外优化建议

  • 把$minutes和阈值时间的定义提到循环外,避免每次循环重复计算,提升脚本运行效率
  • 新增等于判断-ge,避免刚好在阈值时间点创建的VM被漏判

内容的提问来源于stack exchange,提问作者Norrin Rad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 14:24:03