This could be useful depending on your environment. Bigipreport let’s you find things, but it can only go so far.

If you want to do a bit more advanced searches you can use the built in functions in powershell to convert json into objects. The beauty with powershell objects is that you can easily run queries against them.

Attaching a few examples to get you going:

#Create new webclient object
$WebClient = New-Object System.Net.WebClient
#Enable integrated authentication
$WebClient.UseDefaultCredentials = $true
#Get the json objects
$Virtualservers = ($WebClient.DownloadString("https://bigipreport.mydomain.local/json/virtualservers.json")) | ConvertFrom-Json
$rules = ($WebClient.DownloadString("https://bigipreport.mydomain.local/json/irules.json")) | ConvertFrom-Json
$pools = ($WebClient.DownloadString("https://bigipreport.mydomain.local/json/pools.json")) | ConvertFrom-Json
$monitors = ($WebClient.DownloadString("https://bigipreport.mydomain.local/json/monitors.json")) | ConvertFrom-Json

#The data group lists can be a pain to convert if you have identical data save the case of the characters. If that's the case you need to replace the duplicates before using ConvertFrom-Json
$datagrouplists = ($WebClient.DownloadString("https://bigipreport.mydomain.local/json/datagrouplists.json")) | ConvertFrom-Json
  
#Get which virtual servers that has a specific rule
$Virtualservers | Where-Object { $_.irules -contains "/Mypartition/rulename" } | select name
 
#Find all monitors with dk in the name and no receive string. Show columns name, interval and load balancer
$monitors | Where-Object { $_.name.contains("dk") -and $_.receivestring -eq "" } |  select name, interval, loadbalancer