We have an issue where users will add servers into UDT. Our methodology is to only allow access switches in UDT. I have created the script below to identify all devices where the vendor is not Cisco. It brings back the expected Uri's however when I add the Remove-SwisObject statement it errors out.
$ErrorActionPreference = 'Stop'
#Add the snapin
Add-PSSnapin SwisSnapin
#create a connection to solarwinds
$hostname = 'X'
$username = 'X'
$password = 'X'
#swis = Connect-Swis -Hostanme $hostname -Trusted
$swis = Connect-Swis -Hostname $hostname -Username $username -Password $password
#Query Data
$query = Get-SwisData $swis "SELECT u.uri FROM Orion.UDT.Port u JOIN Orion.Nodes n ON n.nodeid = u.nodeid WHERE n.vendor <> 'cisco'"
# The line above does finds the Uri's below. Which happen to be the devices I want GONE!
swis://XXX.net/Orion/Orion.Nodes/NodeID=160/Ports/PortID=1
swis://XXX.net/Orion/Orion.Nodes/NodeID=160/Ports/PortID=2
swis://XXX.net/Orion/Orion.Nodes/NodeID=160/Ports/PortID=3
swis://XXX.net/Orion/Orion.Nodes/NodeID=160/Ports/PortID=4
swis://XXX.net/Orion/Orion.Nodes/NodeID=162/Ports/PortID=5
# Remove Objects
$query | Remove-SwisObject $swis
# Error when adding $query | Remove-SwisObject $swis
Remove-SwisObject : Operation not supported on Orion.UDT.Port
At C:\Users\nsd000.QACMA\Documents\PowerShell Scripts\Do not Modify\Remove Non Cisco Devices From UDT.ps1:22 char:10
+ $query | Remove-SwisObject $swis
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Remove-SwisObject], FaultException`1
+ FullyQualifiedErrorId : SwisError,SwisPowerShell.RemoveSwisObject