Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
105 changes: 105 additions & 0 deletions Public/Remove-LMDeviceGroupProperty.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
<#
.SYNOPSIS
Removes a property from a LogicMonitor device group.

.DESCRIPTION
The Remove-LMDeviceGroupProperty function removes a specified property from a LogicMonitor device group. It can remove the property either by providing the device group ID or the device group name.

.PARAMETER Id
The ID of the device group from which the property should be removed. This parameter is mandatory when using the 'Id' parameter set.

.PARAMETER Name
The name of the device group from which the property should be removed. This parameter is mandatory when using the 'Name' parameter set.

.PARAMETER PropertyName
The name of the property to be removed. This parameter is mandatory.

.EXAMPLE
Remove-LMDeviceGroupProperty -Id 1234 -PropertyName "Property1"
Removes the property named "Property1" from the device with ID 1234.

.EXAMPLE
Remove-LMDeviceGroupProperty -Name "Device1" -PropertyName "Property2"
Removes the property named "Property2" from the device with the name "Device1".

.INPUTS
None.

.OUTPUTS
System.Management.Automation.PSCustomObject. The output object contains the following properties:
- Id: The ID of the device group from which the property was removed.
- Message: A message indicating the success of the operation.

.NOTES
- This function requires a valid LogicMonitor API authentication. Make sure you are logged in before running any commands.
- Use the Connect-LMAccount function to log in before using this function.
#>
Function Remove-LMDeviceGroupProperty {

[CmdletBinding(DefaultParameterSetName = 'Id', SupportsShouldProcess, ConfirmImpact = 'High')]
Param (
[Parameter(Mandatory, ParameterSetName = 'Id')]
[Int]$Id,

[Parameter(Mandatory, ParameterSetName = 'Name')]
[String]$Name,

[Parameter(Mandatory)]
[String]$PropertyName

)
Begin {}
Process {
#Check if we are logged in and have valid api creds
If ($Script:LMAuth.Valid) {

#Lookup Id if supplying username
If ($Name) {
$LookupResult = (Get-LMDeviceGroup -Name $Name).Id
If (Test-LookupResult -Result $LookupResult -LookupString $Name) {
return
}
$Id = $LookupResult
}

#Build header and uri
$ResourcePath = "/device/groups/$Id/properties/$PropertyName"

If ($Name) {
$Message = "Id: $Id | Name: $Name | Property: $PropertyName"
}
Else {
$Message = "Id: $Id | Property: $PropertyName"
}

Try {
If ($PSCmdlet.ShouldProcess($Message, "Remove Device Group Property")) {
$Headers = New-LMHeader -Auth $Script:LMAuth -Method "DELETE" -ResourcePath $ResourcePath
$Uri = "https://$($Script:LMAuth.Portal).logicmonitor.com/santaba/rest" + $ResourcePath

Resolve-LMDebugInfo -Url $Uri -Headers $Headers[0] -Command $MyInvocation

#Issue request
$Response = Invoke-RestMethod -Uri $Uri -Method "DELETE" -Headers $Headers[0] -WebSession $Headers[1]

$Result = [PSCustomObject]@{
Id = $Id
Message = "Successfully removed ($Message)"
}

Return $Result
}
}
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 {}
}
2 changes: 1 addition & 1 deletion Public/Set-LMCollectorConfig.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ Function Set-LMCollectorConfig {
$Value = $Value.toString().toLower()

$ConfigArray = $Config.Split([Environment]::NewLine)
[int[]]$Index = [Linq.Enumerable]::Range(0, $ConfigArray.Count).Where({ Param($i) $ConfigArray[$i] -match $ConfLine })
[int[]]$Index = [Linq.Enumerable]::Range(0, $ConfigArray.Count).Where({ Param($i) $ConfigArray[$i] -match "^$ConfLine" })
If (($Index | Measure-Object).Count -eq 1) {
Write-Information "[INFO]: Updating config parameter $ConfLine to value $Value."
$ConfigArray[$Index[0]] = "$ConfLine=$Value"
Expand Down
8 changes: 7 additions & 1 deletion Public/Set-LMDeviceDatasourceInstance.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ Specifies the description for the instance.
.PARAMETER Properties
Specifies a hashtable of custom properties for the instance.

.PARAMETER PropertiesMethod
Specifies the method to use when updating the properties. Valid values are "Add", "Replace", or "Refresh".

.PARAMETER StopMonitoring
Specifies whether to stop monitoring the instance. This parameter accepts $true or $false.

Expand Down Expand Up @@ -70,6 +73,9 @@ Function Set-LMDeviceDatasourceInstance {

[Hashtable]$Properties,

[ValidateSet("Add", "Replace", "Refresh")] # Add will append to existing prop, Replace will update existing props if specified and add new props, refresh will replace existing props with new
[String]$PropertiesMethod = "Replace",

[Nullable[boolean]]$StopMonitoring,

[Nullable[boolean]]$DisableAlerting,
Expand Down Expand Up @@ -162,7 +168,7 @@ Function Set-LMDeviceDatasourceInstance {

If ($PSCmdlet.ShouldProcess($Message, "Set Device Datasource Instance")) {
$Headers = New-LMHeader -Auth $Script:LMAuth -Method "PATCH" -ResourcePath $ResourcePath -Data $Data
$Uri = "https://$($Script:LMAuth.Portal).logicmonitor.com/santaba/rest" + $ResourcePath
$Uri = "https://$($Script:LMAuth.Portal).logicmonitor.com/santaba/rest" + $ResourcePath + "?opType=$($PropertiesMethod.ToLower())"

Resolve-LMDebugInfo -Url $Uri -Headers $Headers[0] -Command $MyInvocation -Payload $Data

Expand Down
27 changes: 10 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -427,25 +427,18 @@ This change aims to enhance visibility within the community and to foster a more

We appreciate your continued support and enthusiasm for the Logic.Monitor PowerShell module. Your contributions and feedback are vital to the success of this project, and we look forward to seeing how the module evolves with your participation.

## 6.4.1
## 6.5
### Module Updates/Changes
- **Write-LMHost** has been removed entirely starting in this version and replaced with native Write-Information,Warning and Error cmdlets. If you would like to suppress the output of these cmdlets you can use the *\$InformationPreference*, *\$DebugPreference* and *\$WarningPreference* variables. Additionally you can use the *-DisableConsoleLogging* switch on Connect-LMAccount to suppress Write-Information output.
- New/Updated Pester tests have been added to validate the module builds and ensure functionality for the following cmdlets:
- AccessGroup
- AppliesToFunction
- AppliesToSearch
- Device
- DeviceGroup
- NetScanGroup
- OpsNotes
- ReportGroup
- SDT
- Users/Roles
- Website
- WebsiteGroup
- **Set-LMDeviceDatasourceInstance**: Added `-PropertiesMethod` parameter to control property update behavior. Defaults to "Replace" to match other property-related cmdlets.
- **Copy-LMDashboard**: Added `-DashboardTokens` parameter (hashtable) to override tokens when cloning dashboards.
- **Copy-Report**: Now accepts a report object as a template for cloning. This enables customization of properties, resource scope, and other parameters before creating the copy.
- **New-LMNetScan** and **Set-LMNetScan**: Added `-Schedule` parameter that accepts a PSCustomObject to define scan scheduling. Maintains default manual scheduling when parameter is omitted.

### New Cmdlets:
- **New-LMAccessGroupMapping**: This cmdlet will create a new access group mapping/unmapping based on specified module and accessgroups.
### New Cmdlets
- **Remove-LMDeviceGroupProperty**: Enables removal of device properties at the resource group level.

### Bug Fixes
- **Set-LMCollectorConfig**: Resolved an issue where similar configuration paths could cause unintended multiple updates.


[Previous Release Notes](RELEASENOTES.md)
Expand Down
20 changes: 20 additions & 0 deletions RELEASENOTES.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,24 @@
# Previous module release notes
## 6.4.1
### Module Updates/Changes
- **Write-LMHost** has been removed entirely starting in this version and replaced with native Write-Information,Warning and Error cmdlets. If you would like to suppress the output of these cmdlets you can use the *\$InformationPreference*, *\$DebugPreference* and *\$WarningPreference* variables. Additionally you can use the *-DisableConsoleLogging* switch on Connect-LMAccount to suppress Write-Information output.
- New/Updated Pester tests have been added to validate the module builds and ensure functionality for the following cmdlets:
- AccessGroup
- AppliesToFunction
- AppliesToSearch
- Device
- DeviceGroup
- NetScanGroup
- OpsNotes
- ReportGroup
- SDT
- Users/Roles
- Website
- WebsiteGroup

### New Cmdlets:
- **New-LMAccessGroupMapping**: This cmdlet will create a new access group mapping/unmapping based on specified module and accessgroups.

## 6.3
### New Cmdlets:
- **Get-LMLogSource**: This cmdlet will retrieve data for specified LogSources.
Expand Down