Public/Set-LMPushModuleInstanceProperty.ps1
<# .SYNOPSIS Updates an instance property using the LogicMonitor Push Module. .DESCRIPTION The Set-LMPushModuleInstanceProperty function modifies a property value for a datasource instance using the LogicMonitor Push Module API. .PARAMETER DeviceId Specifies the ID of the device. .PARAMETER DeviceName Specifies the name of the device. .PARAMETER DataSourceName Specifies the name of the datasource. .PARAMETER InstanceName Specifies the name of the instance. .PARAMETER PropertyName Specifies the name of the property to update. .PARAMETER PropertyValue Specifies the new value for the property. .EXAMPLE Set-LMPushModuleInstanceProperty -DeviceId 123 -DataSourceName "CPU" -InstanceName "Total" -PropertyName "threshold" -PropertyValue "90" Updates the threshold property for the CPU Total instance on device ID 123. .INPUTS None. .OUTPUTS Returns the response from the API indicating the success of the property update. .NOTES This function requires a valid LogicMonitor API authentication. #> Function Set-LMPushModuleInstanceProperty { [CmdletBinding(DefaultParameterSetName = 'Id')] Param ( [Parameter(Mandatory, ParameterSetName = 'Id')] [Int]$DeviceId, [Parameter(Mandatory, ParameterSetName = 'Name')] [String]$DeviceName, [Parameter(Mandatory)] [String]$DataSourceName, [Parameter(Mandatory)] [String]$InstanceName, [Parameter(Mandatory)] [String]$PropertyName, [Parameter(Mandatory)] [String]$PropertyValue ) Begin {} Process { #Check if we are logged in and have valid api creds If ($Script:LMAuth.Valid) { If ($DeviceName) { $LookupResult = (Get-LMDevice -Name $DeviceName).Id If (Test-LookupResult -Result $LookupResult -LookupString $DeviceName) { return } $DeviceId = $LookupResult } #Build header and uri $ResourcePath = "/instance_property/ingest" Try { $Data = @{ resourceIds = @{"system.deviceid" = $DeviceId } instanceName = $InstanceName dataSource = $DataSourceName instanceProperties = @{$PropertyName = $PropertyValue } } $Data = ($Data | ConvertTo-Json) $Headers = New-LMHeader -Auth $Script:LMAuth -Method "PATCH" -ResourcePath $ResourcePath -Data $Data $Uri = "https://$($Script:LMAuth.Portal).logicmonitor.com/rest" + $ResourcePath Resolve-LMDebugInfo -Url $Uri -Headers $Headers[0] -Command $MyInvocation -Payload $Data #Issue request $Response = Invoke-RestMethod -Uri $Uri -Method "PATCH" -Headers $Headers[0] -WebSession $Headers[1] -Body $Data Return $Response } Catch [Exception] { $Proceed = Resolve-LMException -LMException $PSItem If (!$Proceed) { Return } } } Else { Write-Error "Please ensure you are logged in before running any commands, use Connect-LMAccount to login and try again." } } End {} } |