public/image-assessment.ps1

<#
function Get-FalconContainerVulnerability {
#
.SYNOPSIS
Retrieve known vulnerabilities for the provided image
.DESCRIPTION
Requires 'Falcon Container CLI: Write'.
.PARAMETER OsVersion
Operating system version
.PARAMETER Package
Key and value pairs to filter packages. Accepted properties include: 'layerhash', 'layerindex', 'majorversion',
'packagehash', 'packageprovider', 'packagesource', 'product', 'softwarearchitecture', 'status', and 'vendor'.
.PARAMETER Application
Key and value pairs to filter application packages. Accepted properties include: 'libraries' and 'type'.
.LINK
https://github.com/crowdstrike/psfalcon/wiki/Get-FalconContainerVulnerability
#
  [CmdletBinding(DefaultParameterSetName='/image-assessment/combined/vulnerability-lookups/v1:post',
    SupportsShouldProcess)]
  param(
    [Parameter(ParameterSetName='/image-assessment/combined/vulnerability-lookups/v1:post',Position=1)]
    [string]$OsVersion,
    [Parameter(ParameterSetName='/image-assessment/combined/vulnerability-lookups/v1:post',Position=2)]
    [Alias('packages')]
    [object[]]$Package,
    [Parameter(ParameterSetName='/image-assessment/combined/vulnerability-lookups/v1:post',Position=3)]
    [Alias('applicationPackages')]
    [object[]]$Application
  )
  begin {
    $Param = @{ Command = $MyInvocation.MyCommand.Name; Endpoint = $PSCmdlet.ParameterSetName }
    $Param['Format'] = Get-EndpointFormat $Param.Endpoint
    [System.Collections.Generic.List[object]]$PackList = @()
    [System.Collections.Generic.List[object]]$AppList = @()
  }
  process {
    if ($Package) {
      @($Package).foreach{
        # Filter to defined 'packages' properties
        $i = [PSCustomObject]$_ | Select-Object $Param.Format.Body.packages
        $PackList.Add($i)
      }
    }
    if ($Application) {
      @($Application).foreach{
        # Filter to defined 'applicationPackages' properties
        $i = [PSCustomObject]$_ | Select-Object $Param.Format.Body.applicationPackages
        $AppList.Add($i)
      }
    }
  }
  end {
    if ($PackList) {
      # Add 'packages' as an array and remove remaining value
      $PSBoundParameters['packages'] = @($PackList)
      [void]$PSBoundParameters.Remove('Package')
    }
    if ($AppList) {
      # Add 'packages' as an array and remove remaining value
      $PSBoundParameters['applicationPackages'] = @($AppList)
      [void]$PSBoundParameters.Remove('Application')
    }
    # Modify 'Format' to ensure 'packages' and 'applicationPackages' are properly appended and make request
    [void]$Param.Format.Body.Remove('packages')
    [void]$Param.Format.Body.Remove('applicationPackages')
    $Param.Format.Body.root += 'packages','applicationPackages'
    Invoke-Falcon @Param -UserInput $PSBoundParameters
  }
}
#>