Public/Get-MsrcCvrfExploitabilityIndex.ps1

Function Get-MsrcCvrfExploitabilityIndex {
<#
    .SYNOPSIS
        Get the exploitability index of vulnerabilities found in CVRF document
 
    .DESCRIPTION
       This function gathers the Exploitability Index from vulnerabilities in a CVRF document.
 
    .PARAMETER Vulnerability
        A vulnerability object or objects from a CVRF document object
 
    .EXAMPLE
        Get-MsrcCvrfDocument -ID 2016-Nov | Get-MsrcCvrfExploitabilityIndex
 
        Get the exploitability index from a CVRF document using the pipeline.
 
    .EXAMPLE
        $cvrfDocument = Get-MsrcCvrfDocument -ID 2016-Nov
        Get-MsrcCvrfExploitabilityIndex -Vulnerability $cvrfDocument.Vulnerability
 
        Get the exploitability index from a CVRF document using a variable and parameters
#>

[CmdletBinding()]
Param (
    [Parameter(Mandatory,ValueFromPipelineByPropertyName)]
    $Vulnerability
)
Begin {
    $ThreatsExploitStatusType = 1
}
Process {
    $Vulnerability | ForEach-Object {
        $v = $_

        $v.Threats |
        Where-Object { $_.Type -eq $ThreatsExploitStatusType } |
        ForEach-Object {

            $es = Get-MsrcThreatExploitStatus -ExploitStatusString $_.Description.Value
            [PSCustomObject]@{
                CVE = $v.CVE
                Title = $v.Title.Value
                Weakness = $(if ($v.CWE) { '{0} : {1}' -f "$($v.CWE.ID)","$($v.CWE.Value)"})
                'Customer Action Required' = if ($customerActionNotes = $v.Notes | Where-Object { $_.Title -eq "Customer Action Required" }) {
                    $customerActionNotes.Value
                } else {
                    'Yes'
                } ;
                PubliclyDisclosed     = $es.PubliclyDisclosed
                Exploited             = $es.Exploited
                LatestSoftwareRelease = $es.LatestSoftwareRelease
                OlderSoftwareRelease  = $es.OlderSoftwareRelease
            }
        }
    }
}
End {}
}