public/Get-NexposeAssetVulnerability.ps1
Function Get-NexposeAssetVulnerability { <# .SYNOPSIS Returns the vulnerabilities for an asset .DESCRIPTION Returns the vulnerabilities for an asset .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 } } |