我需要使用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的自动关闭时间
答案 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发送数据。