Public/Set-NCMaintenanceWindows.ps1

<#
.SYNOPSIS
Modifies existing maintenance windows by schedule ID.

.DESCRIPTION
Calls PUT /api/devices/maintenance-windows.

.PARAMETER MaintenanceWindows
Array of maintenance-window update objects. Each must include the `scheduleId` it is
modifying along with the fields to update.

.EXAMPLE
Set-NCMaintenanceWindows -MaintenanceWindows @(@{ scheduleId='abc'; durationMinutes=120 })
#>

function Set-NCMaintenanceWindows {
    [CmdletBinding(SupportsShouldProcess)]
    param (
        [Parameter(Mandatory)]
        [object[]]$MaintenanceWindows
    )

    Write-Verbose "[FUNCTION] Set-NCMaintenanceWindows: invoked."
    $api = Get-NCRestApiInstance
    $body = @{ maintenanceWindows = $MaintenanceWindows }
    $ids = ($MaintenanceWindows | ForEach-Object { $_.scheduleId }) -join ','
    if (-not $PSCmdlet.ShouldProcess($ids, 'Update maintenance windows')) { return }
    $api.Put('api/devices/maintenance-windows', $body)
}