Public/sensor-installers.ps1

function Get-FalconCcid {
    [CmdletBinding(DefaultParameterSetName = '/sensors/queries/installers/ccid/v1:get')]
    param()
    process {
        Invoke-Falcon -Endpoint $PSCmdlet.ParameterSetName
    }
}
function Get-FalconInstaller {
    [CmdletBinding(DefaultParameterSetName = '/sensors/queries/installers/v1:get')]
    param(
        [Parameter(ParameterSetName = '/sensors/entities/installers/v1:get', Mandatory = $true, Position = 1)]
        [ValidatePattern('^\w{64}$')]
        [array] $Ids,

        [Parameter(ParameterSetName = '/sensors/queries/installers/v1:get', Position = 1)]
        [Parameter(ParameterSetName = '/sensors/combined/installers/v1:get', Position = 1)]
        [ValidateScript({ Test-FqlStatement $_ })]
        [string] $Filter,

        [Parameter(ParameterSetName = '/sensors/queries/installers/v1:get', Position = 2)]
        [Parameter(ParameterSetName = '/sensors/combined/installers/v1:get', Position = 2)]
        [string] $Sort,

        [Parameter(ParameterSetName = '/sensors/queries/installers/v1:get', Position = 3)]
        [Parameter(ParameterSetName = '/sensors/combined/installers/v1:get', Position = 3)]
        [ValidateRange(1,500)]
        [int] $Limit,

        [Parameter(ParameterSetName = '/sensors/queries/installers/v1:get', Position = 4)]
        [Parameter(ParameterSetName = '/sensors/combined/installers/v1:get', Position = 4)]
        [int] $Offset,

        [Parameter(ParameterSetName = '/sensors/combined/installers/v1:get', Mandatory = $true)]
        [switch] $Detailed,

        [Parameter(ParameterSetName = '/sensors/queries/installers/v1:get')]
        [Parameter(ParameterSetName = '/sensors/combined/installers/v1:get')]
        [switch] $All,

        [Parameter(ParameterSetName = '/sensors/queries/installers/v1:get')]
        [switch] $Total
    )
    process {
        $Param = @{
            Command  = $MyInvocation.MyCommand.Name
            Endpoint = $PSCmdlet.ParameterSetName
            Inputs   = $PSBoundParameters
            Format   = @{ Query = @('sort', 'ids', 'offset', 'limit', 'filter') }
        }
        Invoke-Falcon @Param
    }
}
function Receive-FalconInstaller {
    [CmdletBinding(DefaultParameterSetName = '/sensors/entities/download-installer/v1:get')]
    param(
        [Parameter(ParameterSetName = '/sensors/entities/download-installer/v1:get', Mandatory = $true,
            ValueFromPipeline = $true, Position = 1)]
        [Alias('sha256')]
        [ValidatePattern('^\w{64}$')]
        [string] $Id,

        [Parameter(ParameterSetName = '/sensors/entities/download-installer/v1:get', Mandatory = $true,
            Position = 2)]
        [ValidateScript({
            if (Test-Path $_) { throw "An item with the specified name $_ already exists." } else { $true }
        })]
        [string] $Path
    )
    process {
        $Param = @{
            Command  = $MyInvocation.MyCommand.Name
            Endpoint = $PSCmdlet.ParameterSetName
            Inputs   = $PSBoundParameters
            Headers  = @{ Accept = 'application/octet-stream' }
            Format   = @{
                Query = @('id')
                Outfile = 'path'
            }
        }
        Invoke-Falcon @Param
    }
}