获取Azure VM创建日期



是否有可能获得VM创建日期的方法?

我现在已经尝试了以下内容

AzureActivity
| where TimeGenerated > ago(90d)
| where ResourceProvider == "Microsoft.Compute" and OperationName == "Create or Update Virtual Machine"
| project Resource ,Datum = format_datetime(EventSubmissionTimestamp, 'MM') ,Caller
| distinct Datum , Resource , Caller
| order by Datum 

此Kusto查询将读取从VM连接到的日志。并从VM及其呼叫者ID中获取所有创建或更新虚拟机操作。

但这是创建和 update ,因此每次更新VM时,它都会给我双重值。

我也尝试了PowerShell

$GetVM = Get-AzureRMVM
Foreach ($vms in $GetVM)
{
$vm = get-azurermvm -name $vms.Name -ResourceGroupName $vms.ResourceGroupName
$log = Get-AzureRmLog -ResourceId $vm.Id -StartTime (Get-Date).AddDays(-90) -WarningAction silentlyContinue 
Write-Output "- Found VM creation at $($log.EventTimestamp) for VM $($log.Id.split("/")[8]) in Resource Group $($log.ResourceGroupName) found in Azure logs"  
}

,但似乎也找不到日志文件中的创建日期。如果有可能在脚本语言中找到虚拟机的创建日期,那么任何人都有线索吗?

获得Azure VM创建日期的最简单方法是查看OS磁盘的创建日期

  1. 在Azure Portal上浏览VM
  2. 在左侧,单击"刀片"磁盘"
  3. 在OS磁盘部分下,单击您的操作系统磁盘。
  4. 在操作系统磁盘的概述刀片中,您可以看到创建的时间

注意:我所有的Azure VM都是使用OS磁盘创建的,从未更改。

希望它有帮助。欢呼。

您可以使用azure cli

使用以下命令

az vm list 

这将列出字段的JSON数据,您可以过滤

date = vm['timeCreated']

//&quoted':" quot'2022-06-24T14:13:00.326985 00:00:00:00"

如果迟到的日期,则没有直接的方法来找出创建日期。但这是一个不错的解决方案:https://savilltech.com/2018/02/13/checking-the-the-pereation time-time-of-an-azure-iaas-vm/

门户的确显示为云服务仪表板中为云服务创建的显示,但是对于特定的VM,这并未显示(您可以使用azure powershell带有Get-AzureService <cloud service name> | select DateCreated(。/p>

当您快速创建VM时,它将始终创建新的云服务,因此创建的时间对于VM和Cloud Service将是相同的。但是,由于您可以在云服务中添加多个VM,因此您不能总是依靠。

在门户网站的VM仪表板上,在底部,如果您查看VHD列,则VHD名称包含磁盘作为名称的一部分创建的日期,尽管对于由图像创建的VMS仅此而已。如果VM是通过磁盘创建的,则可以是任何名称。您可以使用Get-AzureVM <cloud service name> <VM name> | Get-AzureOSDisk | select medialink中的Azure PowerShell中获得该操作系统磁盘名称。

门户网站管理服务下的操作日志可让您搜索过去30天的操作,因此,如果在上个月创建了VM,则可以在此处找到该操作的证据(例如CreateHostedServiceCreateDeployment操作(。/p>

对于从图像创建的Windows VM,WaSetup.log上的时间戳和C:Windowspanther中的WaSetup.xml反映了何时配置VM。

希望它有帮助。

如果您在相应的资源组中检查部署,您将看到该RG中每个部署的最后修改日期。

我找到了另一种方法,通过调整您的ActivityLog查询而不是PowerShell来使它有效。使用httprequest属性似乎给了我我需要的东西。

AzureActivity
| where TimeGenerated > ago(7d)
| where ResourceProvider contains "Microsoft.Compute" and OperationName == "Create or Update Virtual Machine"
| where HTTPRequest contains "PUT"
| project VMName = Resource, Created_On = format_datetime(EventSubmissionTimestamp,'dd-MM-yyyy-HHtt'), User = Caller
| distinct Created_On, VMName, User
| order by Created_On 

就我而言,我试图在过去7天内删除VM。由于某种原因,时间无法正确显示以下查询,因此我必须将其转换为时区。

AzureActivity
| where TimeGenerated > ago(7d)
| where ResourceProvider == "Microsoft.Compute" and OperationName == "Delete Virtual Machine"
| where HTTPRequest contains "DELETE"
| extend MyTimeZone = EventSubmissionTimestamp + 8h
| project VM_Name = Resource, Deleted_On = format_datetime(MyTimeZone, 'dd-MM-yyyy-HHtt'), User = Caller
| distinct Deleted_On , VM_Name , User
| order by Deleted_On

使用AZ模块非常容易:

$VM = Get-AzVM -ResourceGroupName RGNAME -Name VMNAME
$VM.TimeCreated

在您的订阅中运行此Azure CLI命令。它将列出VM及其创建日期和时间。

AZ VM列表 - 输出JSON -QUERY; [*]。{vm:name,creation:timecreated}-O表

最新更新