Public/New-LMDeviceDatasourceInstanceSDT.ps1
|
<# .SYNOPSIS Creates a new SDT entry for a Logic Monitor device datasource instance. .DESCRIPTION The New-LMDeviceDatasourceInstanceSDT function creates a new SDT entry for an instance of a Logic Monitor device datasource. .PARAMETER Comment Specifies the comment for the new instance SDT. Required in the Default parameter set; optional with -ScheduleWizard (prompted when omitted). .PARAMETER ScheduleWizard Launches an interactive wizard to create the SDT. Prompts only for values not already supplied, including device, datasource, and instance selection when needed. .PARAMETER Duration Duration in minutes for one-time SDTs. Use alone (starts now) or with -StartDate. .PARAMETER StartDate Start date and time. Required for OneTimeRange; optional for OneTimeDuration. .PARAMETER EndDate End date and time. Required for OneTimeRange. .PARAMETER Timezone Specifies the timezone for SDTs. Accepts IANA timezone IDs (e.g. America/New_York), Windows standard names (e.g. Eastern Standard Time), or the output of (Get-TimeZone).StandardName. If omitted, the portal timezone is used. .PARAMETER SdtType Recurring schedule type: Daily, Weekly, Monthly, or MonthlyByWeek. .PARAMETER StartHour Start hour (0-23) for recurring SDTs. .PARAMETER StartMinute Start minute (0-59) for recurring SDTs. .PARAMETER EndHour End hour (0-23) for recurring SDTs. .PARAMETER EndMinute End minute (0-59) for recurring SDTs. .PARAMETER WeekDay Day(s) of the week for Weekly or MonthlyByWeek SDTs. Accepts multiple values. .PARAMETER WeekOfMonth Week of the month for MonthlyByWeek SDTs: First, Second, Third, Fourth, or Last. .PARAMETER DayOfMonth Day of the month for Monthly SDTs (1-31), or -3 for the last day of the month. .PARAMETER DeviceDataSourceInstanceId Specifies the ID of the device datasource instance for which to create the SDT. .EXAMPLE New-LMDeviceDatasourceInstanceSDT -ScheduleWizard Launches the full interactive wizard to select a device, datasource, instance, comment, and schedule. .EXAMPLE New-LMDeviceDatasourceInstanceSDT -ScheduleWizard -Comment "Maintenance" -DeviceDataSourceInstanceId 1234 Launches the schedule wizard only; instance and comment are pre-supplied. .EXAMPLE New-LMDeviceDatasourceInstanceSDT -Comment "Test SDT Instance" -StartDate (Get-Date) -EndDate (Get-Date).AddDays(7) -DeviceDataSourceInstanceId 1234 Creates a one-time instance SDT with explicit start and end dates. .NOTES You must run Connect-LMAccount before running this command. .INPUTS None. You cannot pipe objects to this command. .OUTPUTS Returns LogicMonitor.SDT object. #> function New-LMDeviceDatasourceInstanceSDT { [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '', Justification = 'ShouldProcess is invoked in Invoke-LMCreateSDT via CallerPSCmdlet')] [CmdletBinding(SupportsShouldProcess, ConfirmImpact = 'None', DefaultParameterSetName = 'Default')] [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSReviewUnusedParameter', '', Justification = 'Required for the ScheduleWizard to work')] param ( [Parameter(Mandatory, ParameterSetName = 'Default')] [Parameter(ParameterSetName = 'ScheduleWizard')] [String]$Comment, [Parameter(ParameterSetName = 'ScheduleWizard')] [Switch]$ScheduleWizard, [Parameter(ParameterSetName = 'Default')] [Parameter(ParameterSetName = 'ScheduleWizard')] [ValidateRange(1, [Int]::MaxValue)] [Int]$Duration, [Parameter(ParameterSetName = 'Default')] [Parameter(ParameterSetName = 'ScheduleWizard')] [Datetime]$StartDate, [Parameter(ParameterSetName = 'Default')] [Parameter(ParameterSetName = 'ScheduleWizard')] [Datetime]$EndDate, [Parameter(ParameterSetName = 'Default')] [Parameter(ParameterSetName = 'ScheduleWizard')] [ValidateScript({ Test-LMTimezoneId -Timezone $_ })] [String]$Timezone, [Parameter(ParameterSetName = 'Default')] [Parameter(ParameterSetName = 'ScheduleWizard')] [ValidateSet('Daily', 'Weekly', 'Monthly', 'MonthlyByWeek')] [String]$SdtType, [Parameter(ParameterSetName = 'Default')] [Parameter(ParameterSetName = 'ScheduleWizard')] [ValidateRange(0, 23)] [Int]$StartHour, [Parameter(ParameterSetName = 'Default')] [Parameter(ParameterSetName = 'ScheduleWizard')] [ValidateRange(0, 59)] [Int]$StartMinute, [Parameter(ParameterSetName = 'Default')] [Parameter(ParameterSetName = 'ScheduleWizard')] [ValidateRange(0, 23)] [Int]$EndHour, [Parameter(ParameterSetName = 'Default')] [Parameter(ParameterSetName = 'ScheduleWizard')] [ValidateRange(0, 59)] [Int]$EndMinute, [Parameter(ParameterSetName = 'Default')] [Parameter(ParameterSetName = 'ScheduleWizard')] [ValidateSet('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday')] [String[]]$WeekDay, [Parameter(ParameterSetName = 'Default')] [Parameter(ParameterSetName = 'ScheduleWizard')] [ValidateSet('First', 'Second', 'Third', 'Fourth', 'Last')] [String]$WeekOfMonth, [Parameter(ParameterSetName = 'Default')] [Parameter(ParameterSetName = 'ScheduleWizard')] [Int]$DayOfMonth, [Parameter(Mandatory, ParameterSetName = 'Default')] [Parameter(ParameterSetName = 'ScheduleWizard')] [String]$DeviceDataSourceInstanceId ) process { if ($ScheduleWizard) { $EffectiveBound = Invoke-LMSDTCmdletWizard -ResourceType DeviceDatasourceInstance -BoundParameters $PSBoundParameters if (-not $EffectiveBound) { return } } else { if ([string]::IsNullOrWhiteSpace($DeviceDataSourceInstanceId)) { throw 'DeviceDataSourceInstanceId is required.' } $EffectiveBound = @{} foreach ($Key in $PSBoundParameters.Keys) { $EffectiveBound[$Key] = $PSBoundParameters[$Key] } } $Comment = $EffectiveBound['Comment'] $DeviceDataSourceInstanceId = $EffectiveBound['DeviceDataSourceInstanceId'] $SchedulePayload = Build-LMSDTSchedulePayload -BoundParameters $EffectiveBound $Payload = @{ comment = $Comment dataSourceInstanceId = $DeviceDataSourceInstanceId type = 'DeviceDataSourceInstanceSDT' } foreach ($Key in $SchedulePayload.Keys) { $Payload[$Key] = $SchedulePayload[$Key] } Invoke-LMCreateSDT -CallerPSCmdlet $PSCmdlet -Payload $Payload -ShouldProcessTarget "Comment: $Comment | DeviceDataSourceInstanceId: $DeviceDataSourceInstanceId" -ShouldProcessAction 'Create Device Datasource Instance SDT' } } |