functions/Set-WUGDeviceProperties.ps1
|
<#
.SYNOPSIS Sets properties of one or more devices in WhatsUp Gold. .SYNTAX Set-WUGDeviceProperties [-DeviceID] <array> [[-DisplayName] <string>] [[-isWireless] <boolean>] [[-collectWireless] <boolean>] [[-keepDetailsCurrent] <boolean>] [[-note] <string>] [[-snmpOid] <string>] [[-actionPolicy] <array>] .DESCRIPTION The Set-WUGDeviceProperties function allows you to set properties for one or more devices in WhatsUp Gold. You can specify the device ID(s) using the -DeviceID parameter. If you do not specify this parameter, you will be prompted to enter the device ID(s). Other parameters allow you to specify various properties to set for the devices. .PARAMETER DeviceID <array> Specifies the device ID(s) of the device(s) for which you want to set properties. This parameter is mandatory. .PARAMETER DisplayName <string> Specifies the display name of the device. Default is null. .PARAMETER isWireless <boolean> Specifies whether the device is a wireless device. Default is null. .PARAMETER collectWireless <boolean> Specifies whether wireless information should be collected for the device. Default is null. .PARAMETER keepDetailsCurrent <boolean> Specifies whether details should be kept current for the device. Default is null. .PARAMETER note <string> Specifies notes for the device. Default is null. .PARAMETER snmpOid <string> Specifies the SNMP OID for the device. Default is null. .PARAMETER actionPolicyName <string> Specifies the action policy name to assign to the device. Default is null. .PARAMETER actionPolicyId <string> Specifies the action policy ID to assign to the device. Default is null. .EXAMPLE Set-WUGDeviceProperties -DeviceId 42 -DisplayName "Web Server 01" Sets the display name of device 42 to "Web Server 01". .EXAMPLE Set-WUGDeviceProperties -DeviceId 42 -note "Production server" -keepDetailsCurrent $true Sets the note and enables keeping details current for device 42. .EXAMPLE Set-WUGDeviceProperties -DeviceId 1,2,3 -DisplayName "Batch Update" Updates the display name for devices 1, 2, and 3 in a batch PATCH request. .NOTES Author: Jason Alberino (jason@wug.ninja) 2023-03-24 Last modified: 2024-03-15 Reference: https://docs.ipswitch.com/NM/WhatsUpGold2024/02_Guides/rest_api/#tag/Device-Properties #> function Set-WUGDeviceProperties { [CmdletBinding(SupportsShouldProcess = $true)] param ( [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)][Alias('id')][int[]]$DeviceId, [Parameter()] [string] $DisplayName, [Parameter()] [boolean] $isWireless, [Parameter()] [boolean] $collectWireless, [Parameter()] [boolean] $keepDetailsCurrent, [Parameter()] [string] $note, [Parameter()] [string] $snmpOid, [Parameter()] [string] $actionPolicyName, [Parameter()] [string] $actionPolicyId ) # TBD using call from Get-WUGDeviceTemplate or Get-WUGDeviceProperties $finalresult = @() if (-not $PSCmdlet.ShouldProcess("Device(s) $($DeviceID -join ', ')", 'Set device properties')) { return } if ($DeviceID.Count -eq 1) { $uri = $global:WhatsUpServerBaseURI + "/api/v1/devices/$($DeviceID[0])/properties" $method = "PUT" $body = @{} if ($DisplayName) { $body.displayname = $DisplayName } if ($PSBoundParameters.ContainsKey('isWireless')) { $body.iswireless = $isWireless } if ($PSBoundParameters.ContainsKey('collectWireless')) { $body.collectwireless = $collectWireless } if ($PSBoundParameters.ContainsKey('keepDetailsCurrent')) { $body.keepdetailscurrent = $keepDetailsCurrent } if ($note) { $body.note = $note } if ($snmpOid) { $body.snmpoid = $snmpOid } if ($actionPolicyId -or $actionPolicyName) { $actionPolicy = @{} if ($body.actionpolicy) { $actionPolicy = $body.actionpolicy } if ($actionPolicyId) { $actionPolicy += @{ id = "${actionPolicyId}" } } if ($actionPolicyName) { $actionPolicy += @{ name = "${actionPolicyName}" } } $body.actionpolicy = $actionPolicy } else { $actionPolicy = @{} $body.actionpolicy = $actionPolicy } $jsonBody = $body | ConvertTo-Json -Depth 5 try { $result = Get-WUGAPIResponse -uri $uri -method $method -body $jsonBody Write-Information $jsonBody return $result.data } catch { Write-Error "Error setting device properties: $($_)" } } else { $uri = $global:WhatsUpServerBaseURI + "/api/v1/devices/-/properties" $method = "PATCH" $batchSize = 201 for ($i = 0; $i -lt $DeviceID.Count; $i += $batchSize) { $currentBatch = $DeviceID[$i..($i + $batchSize - 1)] $body = @{ devices = $currentBatch } if ($PSBoundParameters.ContainsKey('isWireless')) { $body.iswireless = $isWireless } if ($PSBoundParameters.ContainsKey('collectWireless')) { $body.collectwireless = $collectWireless } if ($PSBoundParameters.ContainsKey('keepDetailsCurrent')) { $body.keepdetailscurrent = $keepDetailsCurrent } if ($note) { $body.note = $note } if ($snmpOid) { $body.snmpoid = $snmpOid } if ($actionPolicyId -or $actionPolicyName) { $actionPolicy = @{} if ($body.actionpolicy) { $actionPolicy = $body.actionpolicy } if ($actionPolicyId) { $actionPolicy += @{ id = "${actionPolicyId}" } } if ($actionPolicyName) { $actionPolicy += @{ name = "${actionPolicyName}" } } $body.actionpolicy = $actionPolicy } else { $actionPolicy = @{} $body.actionpolicy = $actionPolicy } $jsonBody = $body | ConvertTo-Json -Depth 5 Write-Information "Current batch of ${batchSize} is being processed." Write-Debug "Get-WUGAPIResponse -uri ${uri} -method ${method} -body ${jsonBody}" try { $result = Get-WUGAPIResponse -uri $uri -method $method -body $jsonBody $finalresult += $result.data } catch { Write-Error $jsonBody Write-Error "Error setting device properties: $_" $errorMessage = "Error setting device properties: $($_.Exception.Message)`nStackTrace: $($_.ScriptStackTrace)" Write-Error $errorMessage } } return $finalresult } } # End of Set-WUGDeviceProperties function # End of script #------------------------------------------------------------------ # This script is part of the WhatsUpGoldPS PowerShell module. # It is designed to interact with the WhatsUp Gold API for network monitoring. # The script is provided as-is and is not officially supported by WhatsUp Gold. # Use at your own risk. #------------------------------------------------------------------ # SIG # Begin signature block # MIIVlwYJKoZIhvcNAQcCoIIViDCCFYQCAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCBl2+cr09Psmw0I # qcPvLdysW84xd0ZFIzYpJr9frbs5wKCCEdMwggVvMIIEV6ADAgECAhBI/JO0YFWU # jTanyYqJ1pQWMA0GCSqGSIb3DQEBDAUAMHsxCzAJBgNVBAYTAkdCMRswGQYDVQQI # DBJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoM # EUNvbW9kbyBDQSBMaW1pdGVkMSEwHwYDVQQDDBhBQUEgQ2VydGlmaWNhdGUgU2Vy # dmljZXMwHhcNMjEwNTI1MDAwMDAwWhcNMjgxMjMxMjM1OTU5WjBWMQswCQYDVQQG # EwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMS0wKwYDVQQDEyRTZWN0aWdv # IFB1YmxpYyBDb2RlIFNpZ25pbmcgUm9vdCBSNDYwggIiMA0GCSqGSIb3DQEBAQUA # A4ICDwAwggIKAoICAQCN55QSIgQkdC7/FiMCkoq2rjaFrEfUI5ErPtx94jGgUW+s # hJHjUoq14pbe0IdjJImK/+8Skzt9u7aKvb0Ffyeba2XTpQxpsbxJOZrxbW6q5KCD # J9qaDStQ6Utbs7hkNqR+Sj2pcaths3OzPAsM79szV+W+NDfjlxtd/R8SPYIDdub7 # P2bSlDFp+m2zNKzBenjcklDyZMeqLQSrw2rq4C+np9xu1+j/2iGrQL+57g2extme # me/G3h+pDHazJyCh1rr9gOcB0u/rgimVcI3/uxXP/tEPNqIuTzKQdEZrRzUTdwUz # T2MuuC3hv2WnBGsY2HH6zAjybYmZELGt2z4s5KoYsMYHAXVn3m3pY2MeNn9pib6q # RT5uWl+PoVvLnTCGMOgDs0DGDQ84zWeoU4j6uDBl+m/H5x2xg3RpPqzEaDux5mcz # mrYI4IAFSEDu9oJkRqj1c7AGlfJsZZ+/VVscnFcax3hGfHCqlBuCF6yH6bbJDoEc # QNYWFyn8XJwYK+pF9e+91WdPKF4F7pBMeufG9ND8+s0+MkYTIDaKBOq3qgdGnA2T # OglmmVhcKaO5DKYwODzQRjY1fJy67sPV+Qp2+n4FG0DKkjXp1XrRtX8ArqmQqsV/ # AZwQsRb8zG4Y3G9i/qZQp7h7uJ0VP/4gDHXIIloTlRmQAOka1cKG8eOO7F/05QID # AQABo4IBEjCCAQ4wHwYDVR0jBBgwFoAUoBEKIz6W8Qfs4q8p74Klf9AwpLQwHQYD # VR0OBBYEFDLrkpr/NZZILyhAQnAgNpFcF4XmMA4GA1UdDwEB/wQEAwIBhjAPBgNV # HRMBAf8EBTADAQH/MBMGA1UdJQQMMAoGCCsGAQUFBwMDMBsGA1UdIAQUMBIwBgYE # VR0gADAIBgZngQwBBAEwQwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2NybC5jb21v # ZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNAYIKwYBBQUHAQEE # KDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5jb21vZG9jYS5jb20wDQYJKoZI # hvcNAQEMBQADggEBABK/oe+LdJqYRLhpRrWrJAoMpIpnuDqBv0WKfVIHqI0fTiGF # OaNrXi0ghr8QuK55O1PNtPvYRL4G2VxjZ9RAFodEhnIq1jIV9RKDwvnhXRFAZ/ZC # J3LFI+ICOBpMIOLbAffNRk8monxmwFE2tokCVMf8WPtsAO7+mKYulaEMUykfb9gZ # pk+e96wJ6l2CxouvgKe9gUhShDHaMuwV5KZMPWw5c9QLhTkg4IUaaOGnSDip0TYl # d8GNGRbFiExmfS9jzpjoad+sPKhdnckcW67Y8y90z7h+9teDnRGWYpquRRPaf9xH # +9/DUp/mBlXpnYzyOmJRvOwkDynUWICE5EV7WtgwggYaMIIEAqADAgECAhBiHW0M # UgGeO5B5FSCJIRwKMA0GCSqGSIb3DQEBDAUAMFYxCzAJBgNVBAYTAkdCMRgwFgYD # VQQKEw9TZWN0aWdvIExpbWl0ZWQxLTArBgNVBAMTJFNlY3RpZ28gUHVibGljIENv # ZGUgU2lnbmluZyBSb290IFI0NjAeFw0yMTAzMjIwMDAwMDBaFw0zNjAzMjEyMzU5 # NTlaMFQxCzAJBgNVBAYTAkdCMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxKzAp # BgNVBAMTIlNlY3RpZ28gUHVibGljIENvZGUgU2lnbmluZyBDQSBSMzYwggGiMA0G # CSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCbK51T+jU/jmAGQ2rAz/V/9shTUxjI # ztNsfvxYB5UXeWUzCxEeAEZGbEN4QMgCsJLZUKhWThj/yPqy0iSZhXkZ6Pg2A2NV # DgFigOMYzB2OKhdqfWGVoYW3haT29PSTahYkwmMv0b/83nbeECbiMXhSOtbam+/3 # 6F09fy1tsB8je/RV0mIk8XL/tfCK6cPuYHE215wzrK0h1SWHTxPbPuYkRdkP05Zw # mRmTnAO5/arnY83jeNzhP06ShdnRqtZlV59+8yv+KIhE5ILMqgOZYAENHNX9SJDm # +qxp4VqpB3MV/h53yl41aHU5pledi9lCBbH9JeIkNFICiVHNkRmq4TpxtwfvjsUe # dyz8rNyfQJy/aOs5b4s+ac7IH60B+Ja7TVM+EKv1WuTGwcLmoU3FpOFMbmPj8pz4 # 4MPZ1f9+YEQIQty/NQd/2yGgW+ufflcZ/ZE9o1M7a5Jnqf2i2/uMSWymR8r2oQBM # dlyh2n5HirY4jKnFH/9gRvd+QOfdRrJZb1sCAwEAAaOCAWQwggFgMB8GA1UdIwQY # MBaAFDLrkpr/NZZILyhAQnAgNpFcF4XmMB0GA1UdDgQWBBQPKssghyi47G9IritU # pimqF6TNDDAOBgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADATBgNV # HSUEDDAKBggrBgEFBQcDAzAbBgNVHSAEFDASMAYGBFUdIAAwCAYGZ4EMAQQBMEsG # A1UdHwREMEIwQKA+oDyGOmh0dHA6Ly9jcmwuc2VjdGlnby5jb20vU2VjdGlnb1B1 # YmxpY0NvZGVTaWduaW5nUm9vdFI0Ni5jcmwwewYIKwYBBQUHAQEEbzBtMEYGCCsG # AQUFBzAChjpodHRwOi8vY3J0LnNlY3RpZ28uY29tL1NlY3RpZ29QdWJsaWNDb2Rl # U2lnbmluZ1Jvb3RSNDYucDdjMCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5zZWN0 # aWdvLmNvbTANBgkqhkiG9w0BAQwFAAOCAgEABv+C4XdjNm57oRUgmxP/BP6YdURh # w1aVcdGRP4Wh60BAscjW4HL9hcpkOTz5jUug2oeunbYAowbFC2AKK+cMcXIBD0Zd # OaWTsyNyBBsMLHqafvIhrCymlaS98+QpoBCyKppP0OcxYEdU0hpsaqBBIZOtBajj # cw5+w/KeFvPYfLF/ldYpmlG+vd0xqlqd099iChnyIMvY5HexjO2AmtsbpVn0OhNc # WbWDRF/3sBp6fWXhz7DcML4iTAWS+MVXeNLj1lJziVKEoroGs9Mlizg0bUMbOalO # hOfCipnx8CaLZeVme5yELg09Jlo8BMe80jO37PU8ejfkP9/uPak7VLwELKxAMcJs # zkyeiaerlphwoKx1uHRzNyE6bxuSKcutisqmKL5OTunAvtONEoteSiabkPVSZ2z7 # 6mKnzAfZxCl/3dq3dUNw4rg3sTCggkHSRqTqlLMS7gjrhTqBmzu1L90Y1KWN/Y5J # KdGvspbOrTfOXyXvmPL6E52z1NZJ6ctuMFBQZH3pwWvqURR8AgQdULUvrxjUYbHH # j95Ejza63zdrEcxWLDX6xWls/GDnVNueKjWUH3fTv1Y8Wdho698YADR7TNx8X8z2 # Bev6SivBBOHY+uqiirZtg0y9ShQoPzmCcn63Syatatvx157YK9hlcPmVoa1oDE5/ # L9Uo2bC5a4CH2RwwggY+MIIEpqADAgECAhAHnODk0RR/hc05c892LTfrMA0GCSqG # SIb3DQEBDAUAMFQxCzAJBgNVBAYTAkdCMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0 # ZWQxKzApBgNVBAMTIlNlY3RpZ28gUHVibGljIENvZGUgU2lnbmluZyBDQSBSMzYw # HhcNMjYwMjA5MDAwMDAwWhcNMjkwNDIxMjM1OTU5WjBVMQswCQYDVQQGEwJVUzEU # MBIGA1UECAwLQ29ubmVjdGljdXQxFzAVBgNVBAoMDkphc29uIEFsYmVyaW5vMRcw # FQYDVQQDDA5KYXNvbiBBbGJlcmlubzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC # AgoCggIBAPN6aN4B1yYWkI5b5TBj3I0VV/peETrHb6EY4BHGxt8Ap+eT+WpEpJyE # tRYPxEmNJL3A38Bkg7mwzPE3/1NK570ZBCuBjSAn4mSDIgIuXZnvyBO9W1OQs5d6 # 7MlJLUAEufl18tOr3ST1DeO9gSjQSAE5Nql0QDxPnm93OZBon+Fz3CmE+z3MwAe2 # h4KdtRAnCqwM+/V7iBdbw+JOxolpx+7RVjGyProTENIG3pe/hKvPb501lf8uBAAD # LdjZr5ip8vIWbf857Yw1Bu10nVI7HW3eE8Cl5//d1ribHlzTzQLfttW+k+DaFsKZ # BBL56l4YAlIVRsrOiE1kdHYYx6IGrEA809R7+TZA9DzGqyFiv9qmJAbL4fDwetDe # yIq+Oztz1LvEdy8Rcd0JBY+J4S0eDEFIA3X0N8VcLeAwabKb9AjulKXwUeqCJLvN # 79CJ90UTZb2+I+tamj0dn+IKMEsJ4v4Ggx72sxFr9+6XziodtTg5Luf2xd6+Phha # mOxF2px9LObhBLLEMyRsCHZIzVZOFKu9BpHQH7ufGB+Sa80Tli0/6LEyn9+bMYWi # 2ttn6lLOPThXMiQaooRUq6q2u3+F4SaPlxVFLI7OJVMhar6nW6joBvELTJPmANSM # jDSRFDfHRCdGbZsL/keELJNy+jZctF6VvxQEjFM8/bazu6qYhrA7AgMBAAGjggGJ # MIIBhTAfBgNVHSMEGDAWgBQPKssghyi47G9IritUpimqF6TNDDAdBgNVHQ4EFgQU # 6YF0o0D5AVhKHbVocr8GaSIBibAwDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQC # MAAwEwYDVR0lBAwwCgYIKwYBBQUHAwMwSgYDVR0gBEMwQTA1BgwrBgEEAbIxAQIB # AwIwJTAjBggrBgEFBQcCARYXaHR0cHM6Ly9zZWN0aWdvLmNvbS9DUFMwCAYGZ4EM # AQQBMEkGA1UdHwRCMEAwPqA8oDqGOGh0dHA6Ly9jcmwuc2VjdGlnby5jb20vU2Vj # dGlnb1B1YmxpY0NvZGVTaWduaW5nQ0FSMzYuY3JsMHkGCCsGAQUFBwEBBG0wazBE # BggrBgEFBQcwAoY4aHR0cDovL2NydC5zZWN0aWdvLmNvbS9TZWN0aWdvUHVibGlj # Q29kZVNpZ25pbmdDQVIzNi5jcnQwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLnNl # Y3RpZ28uY29tMA0GCSqGSIb3DQEBDAUAA4IBgQAEIsm4xnOd/tZMVrKwi3doAXvC # wOA/RYQnFJD7R/bSQRu3wXEK4o9SIefye18B/q4fhBkhNAJuEvTQAGfqbbpxow03 # J5PrDTp1WPCWbXKX8Oz9vGWJFyJxRGftkdzZ57JE00synEMS8XCwLO9P32MyR9Z9 # URrpiLPJ9rQjfHMb1BUdvaNayomm7aWLAnD+X7jm6o8sNT5An1cwEAob7obWDM6s # X93wphwJNBJAstH9Ozs6LwISOX6sKS7CKm9N3Kp8hOUue0ZHAtZdFl6o5u12wy+z # zieGEI50fKnN77FfNKFOWKlS6OJwlArcbFegB5K89LcE5iNSmaM3VMB2ADV1FEcj # GSHw4lTg1Wx+WMAMdl/7nbvfFxJ9uu5tNiT54B0s+lZO/HztwXYQUczdsFon3pjs # Nrsk9ZlalBi5SHkIu+F6g7tWiEv3rtVApmJRnLkUr2Xq2a4nbslUCt4jKs5UX4V1 # nSX8OM++AXoyVGO+iTj7z+pl6XE9Gw/Td6WKKKsxggMaMIIDFgIBATBoMFQxCzAJ # BgNVBAYTAkdCMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxKzApBgNVBAMTIlNl # Y3RpZ28gUHVibGljIENvZGUgU2lnbmluZyBDQSBSMzYCEAec4OTRFH+FzTlzz3Yt # N+swDQYJYIZIAWUDBAIBBQCggYQwGAYKKwYBBAGCNwIBDDEKMAigAoAAoQKAADAZ # BgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4wDAYKKwYB # BAGCNwIBFTAvBgkqhkiG9w0BCQQxIgQgH0T8A4Oz3YhL3F5tbZfKPeMo/9Dachhn # mMHOm0jPqKUwDQYJKoZIhvcNAQEBBQAEggIAbt+e13r7B5NJXyQ480xY++NJcOVt # Ve/PNevNEvH37j54dKytQxA7AeExBW+vl0oAtfoxv8yQcmWd0yKDssUHum4aOt51 # 9Y8TLFAfIZBKL249p+A8vURu3g8NOBhXpeIFsQ4uMwOO3+5kyZQZsdSBGorzfePa # bmqay3GaIR6KXyxmNcBnJ7yHP+eLtWo6LvyeincH0WUEh+vZXotNZu8FwS0y6XtI # mOearZr+O0i3UL60IuBG9D97XpGUxdkIbkj8SCHEjnUB7wZpuqn/7wrjM7+pIkH5 # EX/T0lyXkA6+U1Yb9yzVfCvMjruhhNggB/dyx7XNyqpwMNPxKufQNzl+AnCzPIpw # ducEOcK2TRTWIGYS+S2kX5AILhgdw33QA3FC/Sryw3OgNa1UJ81mXzKh7uphUjtL # /dVHm5XBZAfGg1En6aoTrLNWu9AgIGuGQY7DORi+3nb6uk+oXWavD/NOCilUU4qe # vjjtSJB5+RSIjULRA9XLqIfaH4HFjBE4bhxI2X3qSSnuv1dJksKyXdaj8beLEaxl # vN4Pl1clAUTyyRDHz4EfvuQOJjZ5H6fYv/YAyPAEitCwvsKCGOqUcE4oUY+9zQRW # foru7MfV2/0Y3hrQz+eUgvadH76VMW1GVsyhqqlKdOhHMEn24abLR+/YhvZJLxH0 # iSKsbeA20r5eMkc= # SIG # End signature block |