获取Azure VM创建日期

时间:2019-05-07 11:53:19

标签: azure powershell kusto

是否可以获取虚拟机创建日期?

我已经尝试了以下方法

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获取所有创建或更新虚拟机操作。

但这是创建并更新,因此每次更新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"  
}

但是似乎也无法在日志文件中找到创建日期。是否有任何线索可以在脚本语言Kusto,Powershell,...内找到虚拟机的创建日期?

5 个答案:

答案 0 :(得分:1)

该门户的确在Cloud Service的仪表板中显示了为Cloud Service创建的,但未为特定的VM显示(您可以使用带有Get-AzureService <cloud service name> | select DateCreated的Azure PowerShell看到该门户)。

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

在门户中VM的仪表板上的底部,如果您查看VHD列,则VHD名称包括磁盘创建的日期作为名称的一部分,尽管这仅适用于从映像创建的VM。如果VM是从磁盘创建的,则名称可以是任何名称。您可以使用Get-AzureVM <cloud service name> <VM name> | Get-AzureOSDisk | select medialink在Azure PowerShell中获得该OS磁盘名称。

门户网站管理服务下的操作日志可让您搜索最近30天的操作,因此,如果虚拟机是在上个月创建的,则可以在那里找到操作的证据(例如CreateHostedService和{ {1}}个操作)。

对于从映像创建的Windows VM,CreateDeploymentWaSetup.logWaSetup.xml上的时间戳反映了VM的配置时间。

希望有帮助。

答案 1 :(得分:1)

如果创建日期晚于90天,则无法直接找到创建日期。但这是一个不错的解决方法:https://savilltech.com/2018/02/13/checking-the-creation-time-of-an-azure-iaas-vm/

答案 2 :(得分:0)

如果选中相应资源组中的“部署”,则将在该RG中看到每个部署的“上次修改日期”。

答案 3 :(得分:0)

对我来说,获取 Azure VM 创建日期的最简单方法是查看操作系统磁盘的创建日期

  1. 在 Azure 门户上浏览到您的 VM
  2. 在左侧,单击刀片“磁盘”
  3. 在操作系统磁盘部分下,点击您的操作系统磁盘。
  4. 在您的操作系统磁盘的概览边栏选项卡中,您可以看到创建时间字段

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

希望有帮助。干杯。

答案 4 :(得分:0)

通过调整您的 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 天内删除虚拟机。出于某种原因,以下查询的时间显示不正确,因此我不得不将其转换为我的时区。

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