【问题标题】:Powershell: Get AzureRM automation schedule recurrence infoPowershell:获取 AzureRM 自动化计划重复信息
【发布时间】:2019-02-19 01:19:11
【问题描述】:

我正在做一些清单,试图从 Azure 收集我所有的启动/停止 VM 计划。 我正在努力提取为每周重复计划选择的日期。 我可以通过以下方式从单个计划中提取所有数据:

Select-AzureRmSubscription <name>
$schedule = Get-AzureRmAutomationSchedule -AutomationAccountName <name)-ResourceGroupName <name> -Name <name>

然后得到所有的日子:

$schedule.WeeklyScheduleOptions.DaysOfWeek -join ","

哪些输出:周一、周二、周三、周四、周五

但如果我遍历所有订阅并构建一个 psobject 对于所有日程安排数据,此数据为空:

$AzSubs = Get-AzureRmSubscription

$objs = @()
foreach ($AzSub in $AzSubs){

    Get-AzureRmSubscription -SubscriptionName $AzSub.Name | Select-AzureRmSubscription
    $azAutAccs = Get-AzureRmAutomationAccount 
    foreach ($azAutAcc in $azAutAccs){
        $AzAutScheds = Get-AzureRmAutomationSchedule -AutomationAccountName $azAutAcc.AutomationAccountName -ResourceGroupName $azAutAcc.ResourceGroupName
        $AzAutScheds = $AzAutScheds | where{$_.IsEnabled -eq "True"}
        foreach ($AzAutSched in $AzAutScheds){

        $DOW = $azAutSched.WeeklyScheduleOptions.DaysOfWeek -join "," | out-string
        $DOM = $azAutSched.MonthlyScheduleOptions.DaysOfMonth -join "," | out-string

            $obj = new-object psobject -Property @{

            SchedName = $AzAutSched.Name
            LastModifiedTime = (get-date ([DateTime]::Parse($AzAutSched.LastModifiedTime)) -Format "dd-MM-yyyy HH:mm (zzz)")
            IsEnabled = $AzAutSched.IsEnabled
            AutomationAccount = $azAutAcc.AutomationAccountName
            ResourceGroup = $azAutAcc.ResourceGroupName
            NextRun = ([DateTime]::Parse($azAutSched.NextRun))
            StartTime = (get-date ([DateTime]::Parse($azAutSched.StartTime)) -Format "HH:mm (zzz)")
            TimeZone = $azAutSched.TimeZone
            Interval = $azAutSched.Interval
            Frequency = $azAutSched.Frequency
            WeekSchedule = $DOW
            MonthSchedule = $DOM

            }

            $objs += $obj
            }

        }
    }
$objs | sort SchedName | ft -Property SchedName,LastModifiedTime,StartTime,TimeZone,Interval,Frequency,WeekSchedule,MonthSchedule

然后我的表格最后只有 WeekSchedule/MonthSchedule 的空白列。

我尝试了不同的组合,即省略 out-string 参数、省略连接、直接在属性行中设置属性,以及在对象上方构建变量并在属性行上引用它。它们都不起作用。

任何人都可以阐明我缺少什么?或其他有关如何完成此操作的提示非常受欢迎。

AzureRM 模块是最新的。

【问题讨论】:

    标签: azure powershell automation schedule


    【解决方案1】:

    根据我的测试,您需要获取单独的时间表,而不是资源组中的所有时间表,它会在这种情况下工作:

    foreach ($azAutAcc in $azAutAccs){
        $AzAutScheds = Get-AzAutomationSchedule -AutomationAccountName $azAutAcc.AutomationAccountName -ResourceGroupName $azAutAcc.ResourceGroupName
        $AzAutScheds = $AzAutScheds | Where-Object {$_.IsEnabled -eq "True"}
        foreach ($AzAutSched in $AzAutScheds){
            $AzAutSched = Get-AzAutomationSchedule -AutomationAccountName $azAutAcc.AutomationAccountName -ResourceGroupName $azAutAcc.ResourceGroupName -Name $AzAutSched.Name
            $DOW = $azAutSched.WeeklyScheduleOptions.DaysOfWeek -join "," | out-string
            $DOM = $azAutSched.MonthlyScheduleOptions.DaysOfMonth -join "," | out-string
    
            $objs += new-object psobject -Property @{
                SchedName = $AzAutSched.Name
                LastModifiedTime = (get-date ([DateTime]::Parse($AzAutSched.LastModifiedTime)) -Format "dd-MM-yyyy HH:mm (zzz)")
                IsEnabled = $AzAutSched.IsEnabled
                AutomationAccount = $azAutAcc.AutomationAccountName
                ResourceGroup = $azAutAcc.ResourceGroupName
                NextRun = ([DateTime]::Parse($azAutSched.NextRun))
                StartTime = (get-date ([DateTime]::Parse($azAutSched.StartTime)) -Format "HH:mm (zzz)")
                TimeZone = $azAutSched.TimeZone
                Interval = $azAutSched.Interval
                Frequency = $azAutSched.Frequency
                WeekSchedule = $DOW
                MonthSchedule = $DOM
            }
        }
    }
    

    【讨论】:

    • 首先,感谢您的快速回复 :) 啊哈,我明白了我现在错过了什么,您说的完全正确。谢谢 - 这似乎工作得很好,我会尝试将它融入我的整个脚本中,看看会发生什么:)
    猜你喜欢
    • 2021-05-25
    • 2018-05-16
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多