webui/searchresults.ps1
$SearchPhrase = $($PoshPost.qtext).Trim() $SearchType = $PoshPost.scope $PageTitle = "Search Results: $SearchPhrase" if (!(Get-Module dbatools)) { Import-Module dbatools } $c1 = $PoshPost.c1 $c2 = $PoshPost.c2 $c3 = $PoshPost.c3 $c4 = $PoshPost.c4 $c5 = $PoshPost.c5 $c6 = $PoshPost.c6 $c7 = $PoshPost.c7 $c8 = $PoshPost.c8 $a1 = $PoshPost.a1 $a2 = $PoshPost.a2 $a3 = $PoshPost.a3 $targets = ($a1, $a2, $a3, $c1, $c2, $c3, $c4, $c5, $c6, $c7, $c8) $rowcount = 0 $targets = $targets | Where-Object{if($_) {$_}} $tabset = "" if ($SearchPhrase -eq "") { $content = "<table id=table2><tr style=`"height:100px`"><td style=`"text-align:center`">" $content += "No search phrase was entered</td></tr></table>" } else { $content = "<table id=table1><tr>" $content += "<th>Category</th><th>Scope</th><th>Query</th><th>Hits</th></tr>" foreach ($target in $targets) { $tset = $null $q2 = "" $v2 = "" $qty = 0 $tset = $target.Split(':') if ($tset.Count -gt 1) { $tgroup = $tset[0] $tablen = $tset[1] $key = $tset[2] if ($tgroup.Substring(0,2) -eq 'cm') { $tcat = "ConfigMgr" } else { $tcat = "Active Directory" } switch ($SearchType) { 'like' { $clause = "like '%$SearchPhrase%'"; break; } 'begins' { $clause = "like '$SearchPhrase%'"; break; } 'ends' { $clause = "like '%$SearchPhrase'"; break; } default { $clause = "= '$SearchPhrase'"; break; } } $query = "select count(*) as QTY from $tablen where ($key $clause)" if ($tset.Count -gt 3) { $q2 = $tset[3] $v2 = $tset[4] $query += " and ($q2 = $v2)" } } else { $tgroup = $tset $tablen = "" $key = "" $query = "" if ($tgroup.Substring(0,2) -eq 'cm') { $tcat = "ConfigMgr" } else { $tcat = "Active Directory" } } switch ($tgroup) { 'cmdevices' { $tscope = "Devices"; $xlink = "cmdevices.ps1?f=name&v=$SearchPhrase&x=$SearchType" break; } 'cmusers' { $tscope = "Users"; $xlink = "cmusers.ps1?f=username&v=$SearchPhrase&x=$SearchType" break; } 'cmdevcolls' { $tscope = "Device Collections"; $xlink = "cmcollections.ps1?f=collectionname&v=$SearchPhrase&x=$SearchType&t=2" break; } 'cmusercolls' { $tscope = "User Collections"; $xlink = "cmcollections.ps1?f=collectionname&v=$SearchPhrase&x=$SearchType&t=1" break; } 'cmproducts' { $tscope = "Software Products"; $xlink = "cmproducts.ps1?f=productname&v=$SearchPhrase&x=$SearchType" break; } 'cmpackages' { $tscope = "Packages"; $xlink = "cmpackages.ps1" break; } 'cmfiles' { $tscope = "Software Files"; $xlink = "cmfiles.ps1?f=filename&v=$SearchPhrase&x=$SearchType" break; } 'cmts' { $tscope = "Task Sequences"; $xlink = "cmts.ps1"; break; } 'adusers' { $tscope = "Users"; $xlink = "adusers.ps1?f=username&v=$SearchPhrase&x=$SearchType"; break; } 'adgroups' { $tscope = "Groups"; $xlink = "adgroups.ps1?f=name&v=$SearchPhrase&x=$SearchType"; break; } 'adcomputers' { $tscope = "Computers"; $xlink = "adcomputers.ps1?f=name&v=$SearchPhrase&x=$SearchType"; break; } 'adsites' { $tscope = "Sites"; $xlink = "adsites.ps1" break; } } if ($query -ne "") { try { $rs = @(Invoke-DbaQuery -SqlInstance $SkCmDBHost -Database "CM_$SkCmSiteCode" -Query $query) $qty = $rs[0].Qty $err = "" } catch { $content += "<tr><td>error: $($Error[0].Exception.Message)</td></tr>" } finally {} } else { switch ($tgroup) { 'adusers' { try { switch ($SearchType) { 'like' { $users = Get-SkAdUsers | ?{$_.UserName -like "*$SearchPhrase*"} $query = "get-adusers where {username like '*$SearchPhrase*'}" break; } 'begins' { $users = Get-SkAdUsers | ?{$_.UserName -like "$SearchPhrase*"} $query = "get-adusers where {username like '$SearchPhrase*'}" break; } 'ends' { $users = Get-SkAdUsers | ?{$_.UserName -like "*$SearchPhrase"} $query = "get-adusers where {username like '*$SearchPhrase'}" break; } default { $users = Get-SkAdUsers | ?{$_.UserName -eq "$SearchPhrase"} $query = "get-adusers where {username = '$SearchPhrase'}" break; } } if ($qty.count -gt 1) { $qty = $groups.count } elseif ($qty.Name -ne "") { $qty = 1 } } catch { $qty = 0 } break; } 'adgroups' { try { switch ($SearchType) { 'like' { $groups = Get-SkAdGroups | ?{$_.Name -like "*$SearchPhrase*"} $query = "get-adgroups where {name like '*$SearchPhrase*'}" break; } 'begins' { $groups = Get-SkAdGroups | ?{$_.Name -like "$SearchPhrase*"} $query = "get-adgroups where {name like '$SearchPhrase*'}" break; } 'ends' { $groups = Get-SkAdGroups | ?{$_.Name -like "*$SearchPhrase"} $query = "get-adgroups where {name like '*$SearchPhrase'}" break; } default { $groups = Get-SkAdGroups | ?{$_.UserName -eq "$SearchPhrase"} $query = "get-adgroups where {name = '$SearchPhrase'}" break; } } if ($qty.count -gt 1) { $qty = $groups.count } elseif ($qty.Name -ne "") { $qty = 1 } } catch { $qty = 0 } break; } 'adcomputers' { try { switch ($SearchType) { 'like' { $comps = Get-SkAdComputers | ?{$_.Name -like "*$SearchPhrase*"} $query = "get-adcomputers where {name like '*$SearchPhrase*'}" break; } 'begins' { $comps = Get-SkAdComputers | ?{$_.Name -like "$SearchPhrase*"} $query = "get-adcomputers where {name like '$SearchPhrase*'}" break; } 'ends' { $comps = Get-SkAdComputers | ?{$_.Name -like "*$SearchPhrase"} $query = "get-adcomputers where {name like '*$SearchPhrase'}" break; } default { $comps = Get-SkAdComputers | ?{$_.UserName -eq "$SearchPhrase"} $query = "get-adcomputers where {name = '$SearchPhrase'}" break; } } $qty = $comps.count } catch { $qty = 0 } break; } } } $xscope = $tscope if ($qty -gt 0) { $xscope = "<a href=`"$xlink`" title=`"Detailed Results`">$tscope</a>" $cell1 = "style=`"background-color:#196F3D;`"" $cell2 = "style=`"background-color:#196F3D;text-align:right;`"" } else { $cell1 = "" $cell2 = "style=`"text-align:right;`"" } $content += "<tr><td $cell1>$tcat</td><td $cell1>$xscope</td><td>$query</td><td $cell2>$qty</td></tr>" } $content += "</table>" } $content += "<form name=`"form1`" id=`"form1`" method=`"post`" action=`"search.ps1`">" $content += "<input type=`"submit`" name=`"search`" id=`"search`" class=`"button1`" value=`"New Search`" />" $content += "</form>" Write-SkWebContent |