public/Get-NexposeAssetVulnerability.ps1
Function Get-NexposeAssetVulnerability { <# .SYNOPSIS Returns the specified user .DESCRIPTION Returns the specified user by id, name, role or privilege .PARAMETER AssetId The identifier of the asset .PARAMETER VulnerabilityId The identifier of the vulnerability .EXAMPLE Get-NexposeAssetVulnerability -AssetId 3 .EXAMPLE Get-NexposeAssetVulnerability -AssetId 3 -VulnerabilityId 'ssl-replace-self-signed-cert' .NOTES For additional information please see my GitHub wiki page .FUNCTIONALITY GET: assets/{id}/vulnerabilities GET: assets/{id}/vulnerabilities/{vulnerabilityId} GET: assets/{id}/vulnerabilities/{vulnerabilityId}/solution GET: assets/{id}/vulnerabilities/{vulnerabilityId}/validations GET: assets/{id}/vulnerabilities/{vulnerabilityId}/validations/{validationId} .LINK https://github.com/My-Random-Thoughts/Rapid7Nexpose #> [CmdletBinding()] Param ( [Parameter(Mandatory = $true)] [int]$AssetId, [string]$VulnerabilityId ) If ([string]::IsNullOrEmpty($VulnerabilityId) -eq $true) { Write-Output @(Invoke-NexposeQuery -UrlFunction "assets/$AssetId/vulnerabilities" -RestMethod Get) } Else { [string]$uri = "assets/$AssetId/vulnerabilities/$VulnerabilityId" $vuln = (Invoke-NexposeQuery -UrlFunction $URI -RestMethod Get) # Include the additional properties... $vuln | Add-Member -Name 'solution' -Value @(Invoke-NexposeQuery -UrlFunction "$uri/solution" -RestMethod Get) -MemberType NoteProperty $vuln | Add-Member -Name 'validations' -Value @(Invoke-NexposeQuery -UrlFunction "$uri/validations" -RestMethod Get) -MemberType NoteProperty Write-Output $vuln } } |