Powershell:获取AzureRM自动化计划重复信息

问题描述 投票:0回答:1

我正在做一些库存尝试从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个回答
0
投票

根据我的测试,您需要获得个人计划,而不是资源组中的所有计划,它将在这种情况下工作:

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
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.