public/fem.ps1
function Edit-FalconAsset { <# .SYNOPSIS Assign criticality to an external asset within Falcon Discover .DESCRIPTION Requires 'Falcon Discover: Write'. .PARAMETER Criticality Asset criticality level .PARAMETER Description Asset criticality description .PARAMETER Triage Triage parameters ('action', 'assigned_to', 'description', 'status') .PARAMETER Cid Customer identifier .PARAMETER Id External asset identifier .LINK https://github.com/crowdstrike/psfalcon/wiki/Edit-FalconAsset #> [CmdletBinding(DefaultParameterSetName='/fem/entities/external-assets/v1:patch',SupportsShouldProcess)] param( [Parameter(ParameterSetName='/fem/entities/external-assets/v1:patch',Position=1)] [ValidateSet('Critical','High','Noncritical','Unassigned',IgnoreCase=$false)] [string]$Criticality, [Parameter(ParameterSetName='/fem/entities/external-assets/v1:patch',Position=2)] [Alias('criticality_description')] [string]$Description, [Parameter(ParameterSetName='/fem/entities/external-assets/v1:patch',Position=3)] [object]$Triage, [Parameter(ParameterSetName='/fem/entities/external-assets/v1:patch',Mandatory,ValueFromPipelineByPropertyName, Position=4)] [ValidatePattern('^[a-fA-F0-9]{32}(-\w{2})?$')] [string]$Cid, [Parameter(ParameterSetName='/fem/entities/external-assets/v1:patch',Mandatory,ValueFromPipelineByPropertyName, ValueFromPipeline,Position=5)] [string]$Id ) begin { $Param = @{ Command = $MyInvocation.MyCommand.Name; Endpoint = $PSCmdlet.ParameterSetName }} process { if ($PSBoundParameters.Cid) { $PSBoundParameters.Cid = Confirm-CidValue $PSBoundParameters.Cid } Invoke-Falcon @Param -UserInput $PSBoundParameters } } function Get-FalconSubsidiary { <# .SYNOPSIS Search for subsidiaries in Falcon Discover .DESCRIPTION Requires 'Falcon Discover: Read'. .PARAMETER Id Subsidiary identifier .PARAMETER VersionId Version identifier .PARAMETER Filter Falcon Query Language expression to limit results .PARAMETER Sort Property and direction to sort results .PARAMETER Limit Maximum number of results per request [default: 100] .PARAMETER Offset Position to begin retrieving results .PARAMETER Detailed Retrieve detailed information .PARAMETER All Repeat requests until all available results are retrieved .PARAMETER Total Display total result count instead of results .LINK https://github.com/crowdstrike/psfalcon/wiki/Get-FalconSubsidiary #> [CmdletBinding(DefaultParameterSetName='/fem/queries/ecosystem-subsidiaries/v1:get',SupportsShouldProcess)] param( [Parameter(ParameterSetName='/fem/entities/ecosystem-subsidiaries/v1:get',Mandatory, ValueFromPipelineByPropertyName,ValueFromPipeline)] [Alias('ids')] [string[]]$Id, [Parameter(ParameterSetName='/fem/queries/ecosystem-subsidiaries/v1:get',Position=1)] [Parameter(ParameterSetName='/fem/combined/ecosystem-subsidiaries/v1:get',Position=1)] [Parameter(ParameterSetName='/fem/entities/ecosystem-subsidiaries/v1:get',ValueFromPipelineByPropertyName, Position=2)] [Alias('version_id')] [string]$VersionId, [Parameter(ParameterSetName='/fem/queries/ecosystem-subsidiaries/v1:get',Position=2)] [Parameter(ParameterSetName='/fem/combined/ecosystem-subsidiaries/v1:get',Position=2)] [ValidateScript({Test-FqlStatement $_})] [string]$Filter, [Parameter(ParameterSetName='/fem/queries/ecosystem-subsidiaries/v1:get',Position=3)] [Parameter(ParameterSetName='/fem/combined/ecosystem-subsidiaries/v1:get',Position=3)] [ValidateSet('name|asc','name|desc','primary_domain|asc','primary_domain|desc',IgnoreCase=$false)] [string]$Sort, [Parameter(ParameterSetName='/fem/queries/ecosystem-subsidiaries/v1:get',Position=4)] [Parameter(ParameterSetName='/fem/combined/ecosystem-subsidiaries/v1:get',Position=4)] [ValidateRange(1,10000)] [int32]$Limit, [Parameter(ParameterSetName='/fem/queries/ecosystem-subsidiaries/v1:get')] [Parameter(ParameterSetName='/fem/combined/ecosystem-subsidiaries/v1:get')] [int32]$Offset, [Parameter(ParameterSetName='/fem/combined/ecosystem-subsidiaries/v1:get',Mandatory)] [switch]$Detailed, [Parameter(ParameterSetName='/fem/queries/ecosystem-subsidiaries/v1:get')] [Parameter(ParameterSetName='/fem/combined/ecosystem-subsidiaries/v1:get')] [switch]$All, [Parameter(ParameterSetName='/fem/queries/ecosystem-subsidiaries/v1:get')] [switch]$Total ) begin { $Param = @{ Command = $MyInvocation.MyCommand.Name; Endpoint = $PSCmdlet.ParameterSetName } [System.Collections.Generic.List[string]]$List = @() } process { if ($Id) { @($Id).foreach{ $List.Add($_) }}} end { if ($List) { $PSBoundParameters['Id'] = @($List) $Param['Max'] = 100 } # Make request for unmodified result Invoke-Falcon @Param -UserInput $PSBoundParameters -RawOutput | ForEach-Object { if ($_.meta.version_id -and $_.resources) { # Capture 'version_id' from 'meta' $version_id = $_.meta.version_id if ($Param.Endpoint -match '/queries/') { @($_.resources).foreach{ # Convert 'id' string to object with 'id' and 'version_id' values [PSCustomObject]@{ id = $_; version_id = $version_id } } } else { @($_.resources).foreach{ # Append 'version_id' and return each detailed result Set-Property $_ version_id $version_id $_ } } } else { # Return regular output if 'meta.version_id' and 'resources' are not present Write-Result $_ } } } } function New-FalconAsset { <# .SYNOPSIS Add external assets to Falcon Discover .DESCRIPTION Requires 'Falcon Discover: Write'. .PARAMETER Asset An object containing asset properties .PARAMETER SubsidiaryId Subsidiary identifier .LINK https://github.com/crowdstrike/psfalcon/wiki/New-FalconAsset #> [CmdletBinding(DefaultParameterSetName='/fem/entities/external-asset-inventory/v1:post',SupportsShouldProcess)] param( [Parameter(ParameterSetName='/fem/entities/external-asset-inventory/v1:post',Mandatory,Position=1)] [Alias('assets')] [object]$Asset, [Parameter(ParameterSetName='/fem/entities/external-asset-inventory/v1:post',Position=2)] [Alias('subsidiary_id')] [string]$SubsidiaryId ) begin { $Param = @{ Command = $MyInvocation.MyCommand.Name; Endpoint = $PSCmdlet.ParameterSetName }} process { Invoke-Falcon @Param -UserInput $PSBoundParameters } } function Remove-FalconAsset { <# .SYNOPSIS Remove external assets from Falcon Discover .DESCRIPTION Requires 'Falcon Discover: Write'. .PARAMETER Id Asset identifier .PARAMETER Comment Audit log comment .LINK https://github.com/crowdstrike/psfalcon/wiki/Remove-FalconAsset #> [CmdletBinding(DefaultParameterSetName='/fem/entities/external-assets/v1:delete',SupportsShouldProcess)] param( [Parameter(ParameterSetName='/fem/entities/external-assets/v1:delete',Mandatory,Position=1)] [Alias('description')] [string]$Comment, [Parameter(ParameterSetName='/fem/entities/external-assets/v1:delete',Mandatory, ValueFromPipelineByPropertyName,ValueFromPipeline,Position=2)] [Alias('ids')] [string[]]$Id ) begin { $Param = @{ Command = $MyInvocation.MyCommand.Name; Endpoint = $PSCmdlet.ParameterSetName } [System.Collections.Generic.List[string]]$List = @() } process { if ($Id) { @($Id).foreach{ $List.Add($_) }}} end { if ($List) { $PSBoundParameters['Id'] = @($List) Invoke-Falcon @Param -UserInput $PSBoundParameters } } } |