So for those of you who run heavily customized environments you may have noticed that the new maps view only gets added to the default node details view. I wrote this script that looks through all the views, figures out which ones could have a Maps tab and clones it in for you. All you need to do is run the below powershell on your Orion server under a Windows account with view customizing permissions and in 2 seconds it will add the maps tab to all your custom versions of the details views. I've tested it pretty extensively in my lab but as always take a backup of your db before you run any scripts and let me know if you get any unexpected results.
<#------------- CONNECT TO SWIS -------------#>
# load the snappin if it's not already loaded (step 1)
if (!(Get-PSSnapin|Where-Object { $_.Name -eq"SwisSnapin" })) {
Add-PSSnapin"SwisSnapin"
}
#define host, credentials, and sql connection string
$hostname='localhost'
#$user = "user"
#$password = "pass"
# create a connection to the SolarWinds API
#$swis = connect-swis -host $hostname -username $user -password $password -ignoresslerrors
$swis=Connect-Swis-Hostname$hostname-Trusted
<#------------- ACTUAL SCRIPT -------------#>
# get list of all views types with a map option
$viewkeys=get-swisdata$swis"SELECT distinct ViewKey FROM Orion.Views where viewtitle = 'map' and viewkey like '%StaticSubview' "
foreach ($viewkeyin$viewkeys)
{
"Working on $viewkey"
#get the viewgroup to use for our parent clone
$mapviewgroup=get-swisdata$swis"select top 1 viewgroup from orion.views where viewkey = '$viewkey'"
#this will be the viewid of the parent of our clones
$cloneviewparent=get-swisdata$swis"select viewid, uri from orion.views where viewgroup = '$mapviewgroup' and viewkey = '$viewkey'"
" View to clone is $($cloneviewparent.viewid)"
#get the correct viewkey
$viewkeytoadd=get-swisdata$swis"select viewkey from orion.views where viewgroup = '$mapviewgroup' and (viewgroupposition = 1 or viewgroupposition is null)"
#find any instances of that viewtype that don't already have a map
$viewgrouptoadd=get-swisdata$swis"select viewgroup, viewgroupname, viewkey, viewtype, viewgroupposition from orion.views where viewkey = '$viewkeytoadd' and viewgroup not in (select viewgroup from orion.views where viewkey like '$viewkey%')"
"Number of view groups to clone into is $($viewgrouptoadd.viewgroup.count)"
foreach ($vgin$viewgrouptoadd.viewgroup )
{
$vieworder=get-swisdata$swis"select viewgroupname, max(viewgroupposition)+1 as position from orion.views where viewgroup = '$vg' group by viewgroupname "
" Cloning map to $($vieworder.viewgroupname) position $($vieworder.position)"
$newview=Invoke-SwisVerb$swisOrion.ViewsCloneView @($cloneviewparent.viewid ,"Map")
" New Viewid is $($newview.'#text')"
$newviewuri=get-swisdata$swis" select uri from orion.views where viewid = $($newview.'#text')"
" New view Uri is $newviewuri"
Set-SwisObject$swis-Uri"$newviewuri"-Properties @{"ViewGroupName"="$($vieworder.viewgroupname)"; “ViewGroup”="$vg"; "ViewGroupPosition"="$($vieworder.position)" }
}
}
Loop1 Systems: SolarWinds Training and Professional Services
- LinkedIN: Loop1 Systems
- Facebook: Loop1 Systems
- Twitter: @Loop1Systems