Public/New-LMAccessGroupMapping.ps1
<# .SYNOPSIS Creates a new LogicMonitor access group mapping. .DESCRIPTION The New-LMAccessGroupMapping function creates a mapping between an access group and a logic module in LogicMonitor. .PARAMETER AccessGroupIds The IDs of the access groups to map. This parameter is mandatory. .PARAMETER LogicModuleType The type of logic module. Valid values are "DATASOURCE", "EVENTSOURCE", "BATCHJOB", "JOBMONITOR", "LOGSOURCE", "TOPOLOGYSOURCE", "PROPERTYSOURCE", "APPLIESTO_FUNCTION", "SNMP_SYSOID_MAP". .PARAMETER LogicModuleId The ID of the logic module to map. This parameter is mandatory. .EXAMPLE #Create a new access group mapping New-LMAccessGroupMapping -AccessGroupIds "12345" -LogicModuleType "DATASOURCE" -LogicModuleId "67890" .NOTES You must run Connect-LMAccount before running this command. .INPUTS None. You cannot pipe objects to this command. .OUTPUTS Returns mapping details object. #> Function New-LMAccessGroupMapping { [CmdletBinding()] Param ( [Parameter(Mandatory)] [String[]]$AccessGroupIds, [Parameter(Mandatory)] [ValidateSet("DATASOURCE", "EVENTSOURCE", "BATCHJOB", "JOBMONITOR", "LOGSOURCE", "TOPOLOGYSOURCE", "PROPERTYSOURCE", "APPLIESTO_FUNCTION", "SNMP_SYSOID_MAP")] [String]$LogicModuleType, [Parameter(Mandatory)] [Int]$LogicModuleId ) #Check if we are logged in and have valid api creds Begin {} Process { If ($Script:LMAuth.Valid) { #Build header and uri $ResourcePath = "/setting/accessgroup/mapunmap/modules" $MappingDetailsArray = New-Object -TypeName System.Collections.ArrayList $MappingDetailsArray.Add([PSCustomObject]@{ moduletype = $LogicModuleType moduleid = $LogicModuleId accessgroups = $AccessGroupIds }) | Out-Null Try { $Data = [PSCustomObject]@{ mappingDetails = $MappingDetailsArray } $Data = ($Data | ConvertTo-Json -Depth 10) $Headers = New-LMHeader -Auth $Script:LMAuth -Method "POST" -ResourcePath $ResourcePath -Data $Data $Uri = "https://$($Script:LMAuth.Portal).logicmonitor.com/santaba/rest" + $ResourcePath Resolve-LMDebugInfo -Url $Uri -Headers $Headers[0] -Command $MyInvocation -Payload $Data #Issue request $Response = Invoke-RestMethod -Uri $Uri -Method "POST" -Headers $Headers[0] -WebSession $Headers[1] -Body $Data If($Response.failure) { Foreach($Failure in $Response.failure) { Write-Warning "$Failure" } } If($Response.success) { Foreach($Success in $Response.success) { Write-Information "[INFO]: Successfully mapped ($LogicModuleType/$LogicModuleId) to accessgroup(s): $($AccessGroupIds -join ',')" } } Return $Response.mappingDetails } 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 {} } |