如何使用PowerShell收集Azure VM自动关闭时间?

时间:2019-05-24 15:02:09

标签: powershell azure-powershell

我需要使用PowerShell收集Azure VM的自动关闭时间,但不知道如何获取必要的资源属性,以反映自动关闭时间。

我得到以下输出:

ID:  /subscriptions/12345/resourceGroups/W12RG/providers/Microsoft.Compute/virtualMachines/W12

Name                   ResourceGroupName ResourceType                   Location
----                   ----------------- ------------                   --------
shutdown-computevm-W12 W12RG             Microsoft.DevTestLab/schedules eastus1
# Retrieve the resource group information
[array]$ResourceGroupArray = Get-AzureRMVm | Select-Object -Property ResourceGroupName, Name, VmId

foreach ($resourceGroup in $ResourceGroupArray){
    $targetResourceId = (Get-AzureRmVM -ResourceGroupName $resourcegroup.ResourceGroupName -Name $resourceGroup.Name).Id
    $shutdownInformation = Get-AzureRmResource -ResourceGroupName $resourcegroup.ResourceGroupName -ResourceType Microsoft.DevTestLab/schedules |  ft
    Write-Host "ID: " $targetResourceId
    $shutdownInformation
}

我需要收集Azure VM的自动关闭时间

1 个答案:

答案 0 :(得分:0)

您需要将-Expandproperties开关添加到Get-AzureRMResource才能访问包含所需数据的属性。这将允许您访问.Properties,这将返回具有各种其他属性的对象(.dailyRecurrence给出了关闭时间)。关闭时间似乎只是一个4个数字的字符串值,前两个数字表示小时,后两个数字表示分钟。所以6:30:45 AM将是0630,而11:45:55 PM将是2345。

[array]$ResourceGroupArray = Get-AzureRMVm | Select-Object -Property ResourceGroupName, Name, VmId

foreach ($resourceGroup in $ResourceGroupArray){
    $targetResourceId = (Get-AzureRmVM -ResourceGroupName $resourcegroup.ResourceGroupName -Name $resourceGroup.Name).Id
    $shutdownInformation = (Get-AzureRmResource -ResourceGroupName $resourcegroup.ResourceGroupName -ResourceType Microsoft.DevTestLab/schedules -Expandproperties).Properties
    Write-Host "ID: " $targetResourceId
    $shutdownInformation
}

我删除了您的| ft,因为通常不建议在存储值之前通过格式化程序发送数据。它将更改您的对象,并因此更改属性。然后,您将无法稍后按预期引用这些属性。如果要以这种方式显示数据,则可以将其追加到单独的$shutdownInformation行中。换句话说,要在输出时通过format-table发送数据。