Powershell: получение сведений о повторении расписания автоматизации AzureRM - PullRequest
0 голосов
/ 18 февраля 2019

Я занимаюсь инвентаризацией, пытаясь собрать все мои расписания запуска / остановки виртуальной машины из Azure.Я борюсь с извлечением дней, выбранных для еженедельных графиков повторения.Я могу извлечь все данные из одного расписания с помощью:

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 обновлен.

1 Ответ

0 голосов
/ 18 февраля 2019

Согласно моему тесту вам нужно получить индивидуальное расписание, а не все расписания в группе ресурсов, оно будет работать в этом случае:

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
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...