如何使用PowerShell来收集在Azure虚拟机自动关机时间?(How to collect t

2019-10-29 12:28发布

我需要收集使用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虚拟机

Answer 1:

您需要添加-Expandproperties切换到Get-AzureRMResource来访问包含您需要的数据的属性。 这将允许您访问.Properties ,这将返回与其他各种性质(对象.dailyRecurrence给出了关机时间)。 关机时间似乎仅仅是4个数字的字符串值与前两个数字代表小时,最后两个分别是分钟。 因此,上午06时30分四十五秒将是0630,和下午11点45分55秒将是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 | ft ,因为它一般不通过所述格式化存储值之前发送数据的最佳实践。 它会改变你的对象,并因此改变了性质。 然后,您将无法为后来期望引用的那些属性。 如果你想显示数据的方式,你可以添加,为您的孤$shutdownInformation线。 换句话说,你要输出的时间,通过格式表发送数据。



文章来源: How to collect the Azure VM auto-shutdown time using PowerShell?