public/Get-NexposeSite.ps1
Function Get-NexposeSite { <# .SYNOPSIS Returns site details .DESCRIPTION Returns site details by id, name, or tag .PARAMETER Id The identifier of the site .PARAMETER Name The name of the site .PARAMETER Tag The tag of the sites .EXAMPLE Get-NexposeSite -SiteId 5 .EXAMPLE Get-NexposeSite -Name 'DR Site' .NOTES For additional information please see my GitHub wiki page .FUNCTIONALITY GET: sites GET: sites/{id} GET: tags/{id}/sites .LINK https://github.com/My-Random-Thoughts/Rapid7Nexpose #> [CmdletBinding(DefaultParameterSetName = 'byId')] Param ( [Parameter(ParameterSetName = 'byId')] [int]$Id = 0, [Parameter(ParameterSetName = 'byName')] [string]$Name, [Parameter(ParameterSetName = 'byTag')] [string]$Tag ) Switch ($PSCmdlet.ParameterSetName) { 'byId' { If ($Id -gt 0) { Write-Output (Invoke-NexposeQuery -UrlFunction "sites/$Id" -RestMethod Get) } Else { Write-Output @(Invoke-NexposeQuery -UrlFunction 'sites' -RestMethod Get) # Return All } } 'byName' { $Name = (ConvertTo-NexposeId -Name $Name -ObjectType Site) Get-NexposeSite -Id $Name } 'byTag' { $Tag = (ConvertTo-NexposeId -Name $Tag -ObjectType 'Tag') [object]$varis = @((Invoke-NexposeQuery -UrlFunction "tags/$Tag/sites" -RestMethod Get).links | Where-Object { $_.rel -eq 'Site' }) If ([string]::IsNullOrEmpty($varis) -eq $false) { ForEach ($getId In $varis) { $getId = (($getId.href -split '/')[-1]) Get-NexposeSite -Id $getId } } } } } |