Public/Show-W365MaintenanceWindow.ps1
|
function Show-W365MaintenanceWindow { [CmdletBinding()] [OutputType('WindowsCloudPC.MaintenanceWindow')] param( [switch]$Browse ) begin { Import-W365CliWindowsCloudPC } process { $items = @(Get-CloudPCMaintenanceWindow -IncludeAssignments | Sort-Object DisplayName) if ($items.Count -eq 0) { Write-Warning 'No maintenance windows were returned.' return } $title = if ($Browse) { 'Windows 365 maintenance windows' } else { 'Pick a Windows 365 maintenance window' } $columnHeader = '{0} {1} {2} {3}' -f (Format-W365CliText -Text 'Name' -Width 36), (Format-W365CliText -Text 'Schedule' -Width 54), (Format-W365CliText -Text 'Lead' -Width 8), (Format-W365CliText -Text 'Assigned groups' -Width 34) Select-W365CliObject -InputObject $items -Title $title -DisplayProperties @( 'DisplayName', 'ScheduleSummary', 'NotificationLeadTimeInMinutes', 'AssignedGroupNames' ) -FilterProperties @( 'DisplayName', 'Description', 'ScheduleSummary', 'AssignedGroupNames' ) -LabelScript { param($Window) $groups = @($Window.AssignedGroupNames) -join ', ' '{0} {1} {2} {3}' -f (Format-W365CliText -Text $Window.DisplayName -Width 36), (Format-W365CliText -Text $Window.ScheduleSummary -Width 54), (Format-W365CliText -Text "$($Window.NotificationLeadTimeInMinutes)m" -Width 8), (Format-W365CliText -Text $groups -Width 34) } -DetailScript { param($Window) @( "Name: $($Window.DisplayName)" "Description: $($Window.Description)" "Notification lead minutes: $($Window.NotificationLeadTimeInMinutes)" "Schedule: $($Window.ScheduleSummary)" "Assigned groups: $(@($Window.AssignedGroupNames) -join ', ')" "Maintenance window ID: $($Window.Id)" ) } -ActionScript { param($Window, $Action) Invoke-W365MaintenanceWindowAction -MaintenanceWindow $Window -Action $Action } -ActionLabels @( 'View assigned group members', 'Edit', 'Delete' ) -SummaryScript { param( [object[]]$AllItems, [object[]]$VisibleItems, [string]$Filter, [int]$SelectedIndex ) @( "Total: $($AllItems.Count) | Visible: $($VisibleItems.Count) | Selected: $([math]::Min($SelectedIndex + 1, [math]::Max($VisibleItems.Count, 1)))" $(if ($Filter) { "Search: $Filter" } else { 'Search: none' }) ) } -RefreshScript { @(Get-CloudPCMaintenanceWindow -IncludeAssignments | Sort-Object DisplayName) } -ColumnHeader $columnHeader -PageSize 18 -ViewOnly:$Browse -Breadcrumb @('W365CLI','Provisioning','Maintenance windows') } end { } } |