public/ngsiem-content.ps1
function Write-NgsContent { param( [string]$Command, [string]$Endpoint, [object]$UserInput, [string]$Property ) begin { # Capture 'Detailed' and 'SearchDomain' values $Detailed = $UserInput.Detailed $Domain = $UserInput.Domain $Repository = $UserInput.Repository [void]$UserInput.Remove('Detailed') } process { Invoke-Falcon -Command $Command -Endpoint $Endpoint -UserInput $UserInput | ForEach-Object { if ($Endpoint -match '/entities/') { $_ } else { # Re-submit result for 'Detailed' or output object with 'id' and 'search_domain' or 'repository' $Param = if ($Domain) { @{ $Property = $_; search_domain = $Domain } } else { @{ $Property = $_; repository = $Repository } } if ($Detailed -eq $true) { & $Command @Param } else { [PSCustomObject]$Param } } } } } function Edit-FalconNgsParser { <# .SYNOPSIS Modify Falcon NGSIEM parsers .DESCRIPTION Requires 'NGSIEM Parsers: Write'. .PARAMETER Id Parser identifier .PARAMETER Repository Repository name .PARAMETER Script Parser script to transform input into events .PARAMETER TestCase An example event and output parameters to use for analysis .PARAMETER FieldToRemove Event fields to remove before parsing .PARAMETER FieldToTag Event fields to tag during parsing .LINK https://github.com/crowdstrike/psfalcon/wiki/Edit-FalconNgsParser #> [CmdletBinding(DefaultParameterSetName='/ngsiem-content/entities/parsers/v1:patch',SupportsShouldProcess)] param( [Parameter(ParameterSetName='/ngsiem-content/entities/parsers/v1:patch',Mandatory, ValueFromPipelineByPropertyName,Position=1)] [string]$Id, [Parameter(ParameterSetName='/ngsiem-content/entities/parsers/v1:patch',Mandatory, ValueFromPipelineByPropertyName,Position=2)] [ValidateSet('parsers-repository',IgnoreCase=$false)] [string]$Repository, [Parameter(ParameterSetName='/ngsiem-content/entities/parsers/v1:patch',Mandatory, ValueFromPipelineByPropertyName,Position=3)] [string]$Script, [Parameter(ParameterSetName='/ngsiem-content/entities/parsers/v1:patch',Mandatory, ValueFromPipelineByPropertyName,Position=4)] [Alias('test_cases')] [object[]]$TestCase, [Parameter(ParameterSetName='/ngsiem-content/entities/parsers/v1:patch',ValueFromPipelineByPropertyName, Position=5)] [Alias('fields_to_be_removed_before_parsing')] [string[]]$FieldToRemoveParsing, [Parameter(ParameterSetName='/ngsiem-content/entities/parsers/v1:patch',ValueFromPipelineByPropertyName, Position=6)] [Alias('fields_to_tag')] [string[]]$FieldToTag ) begin { $Param = @{ Command = $MyInvocation.MyCommand.Name Endpoint = $PSCmdlet.ParameterSetName Format = @{ Body = @{ root = @('fields_to_be_removed_before_parsing','fields_to_tag','id','repository','script','test_cases') } } } } process { Invoke-Falcon @Param -UserInput $PSBoundParameters } } function Get-FalconNgsDashboard { <# .SYNOPSIS Search for Falcon NGSIEM dashboards .DESCRIPTION Requires 'NGSIEM Dashboards: Read'. .PARAMETER Id Dashboard identifier .PARAMETER Domain Repository or view to search .PARAMETER Filter Falcon Query Language expression to limit results .PARAMETER Limit Maximum number of results per request [default: 50] .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-FalconNgsDashboard #> [CmdletBinding(DefaultParameterSetName='/ngsiem-content/queries/dashboards/v1:get',SupportsShouldProcess)] param( [Parameter(ParameterSetName='/ngsiem-content/entities/dashboards-template/v1:get',Mandatory, ValueFromPipelineByPropertyName,Position=1)] [Alias('ids')] [string]$Id, [Parameter(ParameterSetName='/ngsiem-content/queries/dashboards/v1:get',Mandatory,Position=1)] [Parameter(ParameterSetName='/ngsiem-content/entities/dashboards-template/v1:get',Mandatory, ValueFromPipelineByPropertyName,Position=2)] [ValidateSet('all','dashboards','falcon','third-party',IgnoreCase=$false)] [Alias('search_domain')] [string]$Domain, [Parameter(ParameterSetName='/ngsiem-content/queries/dashboards/v1:get',Position=2)] [ValidateScript({Test-FqlStatement $_})] [string]$Filter, [Parameter(ParameterSetName='/ngsiem-content/queries/dashboards/v1:get',Position=3)] [string]$Limit, [Parameter(ParameterSetName='/ngsiem-content/queries/dashboards/v1:get')] [string]$Offset, [Parameter(ParameterSetName='/ngsiem-content/queries/dashboards/v1:get')] [switch]$Detailed, [Parameter(ParameterSetName='/ngsiem-content/queries/dashboards/v1:get')] [switch]$All, [Parameter(ParameterSetName='/ngsiem-content/queries/dashboards/v1:get')] [switch]$Total ) begin { $Param = @{ Command = $MyInvocation.MyCommand.Name; Endpoint = $PSCmdlet.ParameterSetName }} process { Write-NgsContent @Param -UserInput $PSBoundParameters -Property id } } function Get-FalconNgsLookupFile { <# .SYNOPSIS Search for Falcon NGSIEM lookup files .DESCRIPTION Requires 'NGSIEM Lookup Files: Read'. .PARAMETER Filename Lookup file name .PARAMETER Domain Repository or view to search .PARAMETER Filter Falcon Query Language expression to limit results .PARAMETER Limit Maximum number of results per request [default: 50] .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-FalconNgsLookupFile #> [CmdletBinding(DefaultParameterSetName='/ngsiem-content/queries/lookupfiles/v1:get',SupportsShouldProcess)] param( [Parameter(ParameterSetName='/ngsiem-content/entities/lookupfiles/v1:get',Mandatory, ValueFromPipelineByPropertyName,Position=1)] [string]$Filename, [Parameter(ParameterSetName='/ngsiem-content/queries/lookupfiles/v1:get',Mandatory,Position=1)] [Parameter(ParameterSetName='/ngsiem-content/entities/lookupfiles/v1:get',Mandatory, ValueFromPipelineByPropertyName,Position=2)] [ValidateSet('all','dashboards','falcon','parsers-repository','third-party',IgnoreCase=$false)] [Alias('search_domain')] [string]$Domain, [Parameter(ParameterSetName='/ngsiem-content/queries/lookupfiles/v1:get',Position=2)] [ValidateScript({Test-FqlStatement $_})] [string]$Filter, [Parameter(ParameterSetName='/ngsiem-content/queries/lookupfiles/v1:get',Position=3)] [string]$Limit, [Parameter(ParameterSetName='/ngsiem-content/queries/lookupfiles/v1:get')] [string]$Offset, [Parameter(ParameterSetName='/ngsiem-content/queries/lookupfiles/v1:get')] [switch]$Detailed, [Parameter(ParameterSetName='/ngsiem-content/queries/lookupfiles/v1:get')] [switch]$All, [Parameter(ParameterSetName='/ngsiem-content/queries/lookupfiles/v1:get')] [switch]$Total ) begin { $Param = @{ Command = $MyInvocation.MyCommand.Name; Endpoint = $PSCmdlet.ParameterSetName }} process { Write-NgsContent @Param -UserInput $PSBoundParameters -Property filename } } function Get-FalconNgsParser { <# .SYNOPSIS Search for Falcon NGSIEM parsers .DESCRIPTION Requires 'NGSIEM Parsers: Read'. .PARAMETER Id Parser identifier .PARAMETER Repository Repository to search .PARAMETER Filter Falcon Query Language expression to limit results .PARAMETER Limit Maximum number of results per request [default: 50] .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-FalconNgsParser #> [CmdletBinding(DefaultParameterSetName='/ngsiem-content/queries/parsers/v1:get',SupportsShouldProcess)] param( [Parameter(ParameterSetName='/ngsiem-content/entities/parsers/v1:get',Mandatory, ValueFromPipelineByPropertyName,Position=1)] [Alias('ids')] [string]$Id, [Parameter(ParameterSetName='/ngsiem-content/queries/parsers/v1:get',Mandatory,Position=1)] [Parameter(ParameterSetName='/ngsiem-content/entities/parsers/v1:get',Mandatory, ValueFromPipelineByPropertyName,Position=2)] [ValidateSet('parsers-repository',IgnoreCase=$false)] [string]$Repository, [Parameter(ParameterSetName='/ngsiem-content/queries/parsers/v1:get',Position=2)] [ValidateScript({Test-FqlStatement $_})] [string]$Filter, [Parameter(ParameterSetName='/ngsiem-content/queries/parsers/v1:get',Position=3)] [string]$Limit, [Parameter(ParameterSetName='/ngsiem-content/queries/parsers/v1:get')] [string]$Offset, [Parameter(ParameterSetName='/ngsiem-content/queries/parsers/v1:get')] [switch]$Detailed, [Parameter(ParameterSetName='/ngsiem-content/queries/parsers/v1:get')] [switch]$All, [Parameter(ParameterSetName='/ngsiem-content/queries/parsers/v1:get')] [switch]$Total ) begin { $Param = @{ Command = $MyInvocation.MyCommand.Name; Endpoint = $PSCmdlet.ParameterSetName }} process { Write-NgsContent @Param -UserInput $PSBoundParameters -Property id } } function Get-FalconNgsSavedQuery { <# .SYNOPSIS Search for Falcon NGSIEM saved queries .DESCRIPTION Requires 'NGSIEM Saved Queries: Read'. .PARAMETER Id Saved query identifier .PARAMETER Domain Repository or view .PARAMETER Filter Falcon Query Language expression to limit results .PARAMETER Limit Maximum number of results per request [default: 50] .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-FalconNgsSavedQuery #> [CmdletBinding(DefaultParameterSetName='/ngsiem-content/queries/savedqueries/v1:get',SupportsShouldProcess)] param( [Parameter(ParameterSetName='/ngsiem-content/entities/savedqueries-template/v1:get',Mandatory, ValueFromPipelineByPropertyName,Position=1)] [Alias('ids')] [string]$Id, [Parameter(ParameterSetName='/ngsiem-content/queries/savedqueries/v1:get',Mandatory,Position=1)] [Parameter(ParameterSetName='/ngsiem-content/entities/savedqueries-template/v1:get',Mandatory, ValueFromPipelineByPropertyName,Position=2)] [ValidateSet('all','dashboards','falcon','third-party',IgnoreCase=$false)] [Alias('search_domain')] [string]$Domain, [Parameter(ParameterSetName='/ngsiem-content/queries/savedqueries/v1:get',Position=2)] [ValidateScript({Test-FqlStatement $_})] [string]$Filter, [Parameter(ParameterSetName='/ngsiem-content/queries/savedqueries/v1:get',Position=3)] [string]$Limit, [Parameter(ParameterSetName='/ngsiem-content/queries/savedqueries/v1:get')] [string]$Offset, [Parameter(ParameterSetName='/ngsiem-content/queries/savedqueries/v1:get')] [switch]$Detailed, [Parameter(ParameterSetName='/ngsiem-content/queries/savedqueries/v1:get')] [switch]$All, [Parameter(ParameterSetName='/ngsiem-content/queries/savedqueries/v1:get')] [switch]$Total ) begin { $Param = @{ Command = $MyInvocation.MyCommand.Name; Endpoint = $PSCmdlet.ParameterSetName }} process { Write-NgsContent @Param -UserInput $PSBoundParameters -Property id } } function New-FalconNgsParser { <# .SYNOPSIS Create a Falcon NGSIEM parser .DESCRIPTION Requires 'NGSIEM Parsers: Write'. .PARAMETER Name Parser name .PARAMETER Repository Repository name .PARAMETER Script Parser script to transform input into events .PARAMETER TestCase An example event and output parameters to use for analysis .PARAMETER FieldToRemove Event fields to remove before parsing .PARAMETER FieldToTag Event fields to tag during parsing .LINK https://github.com/crowdstrike/psfalcon/wiki/New-FalconNgsParser #> [CmdletBinding(DefaultParameterSetName='/ngsiem-content/entities/parsers/v1:post',SupportsShouldProcess)] param( [Parameter(ParameterSetName='/ngsiem-content/entities/parsers/v1:post',Mandatory, ValueFromPipelineByPropertyName,Position=1)] [string]$Name, [Parameter(ParameterSetName='/ngsiem-content/entities/parsers/v1:post',Mandatory, ValueFromPipelineByPropertyName,Position=2)] [ValidateSet('parsers-repository',IgnoreCase=$false)] [string]$Repository, [Parameter(ParameterSetName='/ngsiem-content/entities/parsers/v1:post',Mandatory, ValueFromPipelineByPropertyName,Position=3)] [string]$Script, [Parameter(ParameterSetName='/ngsiem-content/entities/parsers/v1:post',Mandatory, ValueFromPipelineByPropertyName,Position=4)] [Alias('test_cases')] [object[]]$TestCase, [Parameter(ParameterSetName='/ngsiem-content/entities/parsers/v1:post',ValueFromPipelineByPropertyName, Position=5)] [Alias('fields_to_be_removed_before_parsing')] [string[]]$FieldToRemove, [Parameter(ParameterSetName='/ngsiem-content/entities/parsers/v1:post',ValueFromPipelineByPropertyName, Position=6)] [Alias('fields_to_tag')] [string[]]$FieldToTag ) begin { $Param = @{ Command = $MyInvocation.MyCommand.Name Endpoint = $PSCmdlet.ParameterSetName Format = @{ Body = @{ root = @('fields_to_be_removed_before_parsing','fields_to_tag','name','repository','script','test_cases') } } } } process { Invoke-Falcon @Param -UserInput $PSBoundParameters } } function Receive-FalconNgsDashboard { <# .SYNOPSIS Download a Falcon NGSIEM dashboard YAML template .DESCRIPTION Requires 'NGSIEM Dashboards: Read'. .PARAMETER Path Destination path .PARAMETER Id Dashboard identifier .PARAMETER Domain Repository or view .PARAMETER Force Overwrite an existing file when present .LINK https://github.com/crowdstrike/psfalcon/wiki/Receive-FalconNgsDashboard #> [CmdletBinding(DefaultParameterSetName='/ngsiem-content/entities/dashboards-template/v1:get', SupportsShouldProcess)] param( [Parameter(ParameterSetName='/ngsiem-content/entities/dashboards-template/v1:get',Position=1)] [string]$Path, [Parameter(ParameterSetName='/ngsiem-content/entities/dashboards-template/v1:get',Mandatory, ValueFromPipelineByPropertyName,Position=2)] [Alias('ids')] [string]$Id, [Parameter(ParameterSetName='/ngsiem-content/entities/dashboards-template/v1:get',Mandatory, ValueFromPipelineByPropertyName,Position=3)] [ValidateSet('all','dashboards','falcon','third-party',IgnoreCase=$false)] [Alias('search_domain')] [string]$Domain, [Parameter(ParameterSetName='/ngsiem-content/entities/dashboards-template/v1:get')] [switch]$Force ) process { if (!$PSBoundParameters.Path) { # When 'Path' is not specified, use a combination of 'dashboard', 'search_domain', and 'id' $PSBoundParameters['Path'] = Join-Path (Get-Location).Path (('dashboard',$PSBoundParameters.Domain, $PSBoundParameters.Id -join '_'),'yaml' -join '.') } $Request = Get-FalconNgsDashboard -Id $PSBoundParameters.Id -Domain $PSBoundParameters.Domain if ($Request) { $PSBoundParameters.Path = Assert-Extension $PSBoundParameters.Path 'yaml' $OutPath = Test-OutFile $PSBoundParameters.Path if ($OutPath.Category -eq 'ObjectNotFound') { Write-Error @OutPath } elseif ($PSBoundParameters.Path) { if ($OutPath.Category -eq 'WriteError' -and !$Force) { Write-Error @OutPath } elseif ($Request.yaml_template) { $OutParam = @{ InputObject = $Request.yaml_template FilePath = $PSBoundParameters.Path Encoding = 'UTF8' } if ($PSBoundParameters.Force) { $OutParam['Force'] = $true } Out-File @OutParam } } } } end { if ($Request -and $OutParam -and (Test-Path $OutParam.FilePath)) { Get-ChildItem $OutParam.FilePath | Select-Object FullName,Length,LastWriteTime } } } function Receive-FalconNgsParser { <# .SYNOPSIS Download a Falcon NGSIEM parser YAML template .DESCRIPTION Requires 'NGSIEM Parsers: Read'. .PARAMETER Path Destination path .PARAMETER Id Parser identifier .PARAMETER Repository Repository name .PARAMETER Force Overwrite an existing file when present .LINK https://github.com/crowdstrike/psfalcon/wiki/Receive-FalconNgsParser #> [CmdletBinding(DefaultParameterSetName='/ngsiem-content/entities/parsers-template/v1:get', SupportsShouldProcess)] param( [Parameter(ParameterSetName='/ngsiem-content/entities/parsers-template/v1:get',Position=1)] [string]$Path, [Parameter(ParameterSetName='/ngsiem-content/entities/parsers-template/v1:get',Mandatory, ValueFromPipelineByPropertyName,Position=2)] [Alias('ids')] [string]$Id, [Parameter(ParameterSetName='/ngsiem-content/entities/parsers-template/v1:get',Mandatory, ValueFromPipelineByPropertyName,Position=3)] [ValidateSet('parsers-repository',IgnoreCase=$false)] [string]$Repository, [Parameter(ParameterSetName='/ngsiem-content/entities/parsers-template/v1:get')] [switch]$Force ) begin { $Param = @{ Command = $MyInvocation.MyCommand.Name; Endpoint = $PSCmdlet.ParameterSetName }} process { if (!$PSBoundParameters.Path) { # When 'Path' is not specified, use a combination of 'parser', 'repository', and 'id' $PSBoundParameters['Path'] = Join-Path (Get-Location).Path (('parser',$PSBoundParameters.Repository, $PSBoundParameters.Id -join '_'),'yaml' -join '.') } $Request = Write-NgsContent @Param -UserInput $PSBoundParameters -Property id if ($Request) { $PSBoundParameters.Path = Assert-Extension $PSBoundParameters.Path 'yaml' $OutPath = Test-OutFile $PSBoundParameters.Path if ($OutPath.Category -eq 'ObjectNotFound') { Write-Error @OutPath } elseif ($PSBoundParameters.Path) { if ($OutPath.Category -eq 'WriteError' -and !$Force) { Write-Error @OutPath } elseif ($Request.yaml_template) { $OutParam = @{ InputObject = $Request.yaml_template FilePath = $PSBoundParameters.Path Encoding = 'UTF8' } if ($PSBoundParameters.Force) { $OutParam['Force'] = $true } Out-File @OutParam } } } } end { if ($Request -and $OutParam -and (Test-Path $OutParam.FilePath)) { Get-ChildItem $OutParam.FilePath | Select-Object FullName,Length,LastWriteTime } } } function Receive-FalconNgsSavedQuery { <# .SYNOPSIS Download a Falcon NGSIEM saved query YAML template .DESCRIPTION Requires 'NGSIEM Saved Queries: Read'. .PARAMETER Path Destination path .PARAMETER Id Saved query identifier .PARAMETER Domain Repository or view .PARAMETER Force Overwrite an existing file when present .LINK https://github.com/crowdstrike/psfalcon/wiki/Receive-FalconNgsSavedQuery #> [CmdletBinding(DefaultParameterSetName='/ngsiem-content/entities/savedqueries-template/v1:get', SupportsShouldProcess)] param( [Parameter(ParameterSetName='/ngsiem-content/entities/savedqueries-template/v1:get',Position=1)] [string]$Path, [Parameter(ParameterSetName='/ngsiem-content/entities/savedqueries-template/v1:get',Mandatory, ValueFromPipelineByPropertyName,Position=2)] [Alias('ids')] [string]$Id, [Parameter(ParameterSetName='/ngsiem-content/entities/savedqueries-template/v1:get',Mandatory, ValueFromPipelineByPropertyName,Position=3)] [ValidateSet('all','dashboards','falcon','third-party',IgnoreCase=$false)] [Alias('search_domain')] [string]$Domain, [Parameter(ParameterSetName='/ngsiem-content/entities/savedqueries-template/v1:get')] [switch]$Force ) process { if (!$PSBoundParameters.Path) { # When 'Path' is not specified, use a combination of 'query', 'search_domain', and 'id' $PSBoundParameters['Path'] = Join-Path (Get-Location).Path (('query',$PSBoundParameters.Domain, $PSBoundParameters.Id -join '_'),'yaml' -join '.') } $Request = Get-FalconNgsSavedQuery -Id $PSBoundParameters.Id -Domain $PSBoundParameters.Domain if ($Request) { $PSBoundParameters.Path = Assert-Extension $PSBoundParameters.Path 'yaml' $OutPath = Test-OutFile $PSBoundParameters.Path if ($OutPath.Category -eq 'ObjectNotFound') { Write-Error @OutPath } elseif ($PSBoundParameters.Path) { if ($OutPath.Category -eq 'WriteError' -and !$Force) { Write-Error @OutPath } elseif ($Request.yaml_template) { $OutParam = @{ InputObject = $Request.yaml_template FilePath = $PSBoundParameters.Path Encoding = 'UTF8' } if ($PSBoundParameters.Force) { $OutParam['Force'] = $true } Out-File @OutParam } } } } end { if ($Request -and $OutParam -and (Test-Path $OutParam.FilePath)) { Get-ChildItem $OutParam.FilePath | Select-Object FullName,Length,LastWriteTime } } } function Remove-FalconNgsDashboard { <# .SYNOPSIS Remove Falcon NGSIEM dashboards .DESCRIPTION Requires 'NGSIEM Dashboards: Write'. .PARAMETER Id Dashboard identifier .PARAMETER Domain Repository or view .LINK https://github.com/crowdstrike/psfalcon/wiki/Remove-FalconNgsDashboard #> [CmdletBinding(DefaultParameterSetName='/ngsiem-content/entities/dashboards/v1:delete',SupportsShouldProcess)] param( [Parameter(ParameterSetName='/ngsiem-content/entities/dashboards/v1:delete',Mandatory, ValueFromPipelineByPropertyName,Position=1)] [Alias('ids')] [string]$Id, [Parameter(ParameterSetName='/ngsiem-content/entities/dashboards/v1:delete',Mandatory, ValueFromPipelineByPropertyName,Position=2)] [ValidateSet('all','dashboards','falcon','third-party',IgnoreCase=$false)] [Alias('search_domain')] [string]$Domain ) begin { $Param = @{ Command = $MyInvocation.MyCommand.Name; Endpoint = $PSCmdlet.ParameterSetName }} process { Invoke-Falcon @Param -UserInput $PSBoundParameters } } function Remove-FalconNgsLookupFile { <# .SYNOPSIS Remove Falcon NGSIEM lookup files .DESCRIPTION Requires 'NGSIEM Lookup Files: Write'. .PARAMETER Filename Lookup file name .PARAMETER Domain Repository or view .LINK https://github.com/crowdstrike/psfalcon/wiki/Remove-FalconNgsLookupFile #> [CmdletBinding(DefaultParameterSetName='/ngsiem-content/entities/lookupfiles/v1:delete',SupportsShouldProcess)] param( [Parameter(ParameterSetName='/ngsiem-content/entities/lookupfiles/v1:delete',Mandatory, ValueFromPipelineByPropertyName,Position=1)] [string]$Filename, [Parameter(ParameterSetName='/ngsiem-content/entities/lookupfiles/v1:delete',Mandatory, ValueFromPipelineByPropertyName,Position=2)] [ValidateSet('all','falcon','parsers-repository','third-party',IgnoreCase=$false)] [Alias('search_domain')] [string]$Domain ) begin { $Param = @{ Command = $MyInvocation.MyCommand.Name; Endpoint = $PSCmdlet.ParameterSetName }} process { Invoke-Falcon @Param -UserInput $PSBoundParameters } } function Remove-FalconNgsParser { <# .SYNOPSIS Remove Falcon NGSIEM parsers .DESCRIPTION Requires 'NGSIEM Parsers: Write'. .PARAMETER Id Parser identifier .PARAMETER Repository Repository .LINK https://github.com/crowdstrike/psfalcon/wiki/Remove-FalconNgsParser #> [CmdletBinding(DefaultParameterSetName='/ngsiem-content/entities/parsers/v1:delete',SupportsShouldProcess)] param( [Parameter(ParameterSetName='/ngsiem-content/entities/parsers/v1:delete',Mandatory, ValueFromPipelineByPropertyName,Position=1)] [Alias('ids')] [string]$Id, [Parameter(ParameterSetName='/ngsiem-content/entities/parsers/v1:delete',Mandatory, ValueFromPipelineByPropertyName,Position=2)] [ValidateSet('parsers-repository',IgnoreCase=$false)] [string]$Repository ) begin { $Param = @{ Command = $MyInvocation.MyCommand.Name; Endpoint = $PSCmdlet.ParameterSetName }} process { Invoke-Falcon @Param -UserInput $PSBoundParameters } } function Remove-FalconNgsSavedQuery { <# .SYNOPSIS Remove Falcon NGSIEM saved queries .DESCRIPTION Requires 'NGSIEM Saved Queries: Write'. .PARAMETER Id Saved query identifier .PARAMETER Domain Repository or view .LINK https://github.com/crowdstrike/psfalcon/wiki/Remove-FalconNgsSavedQuery #> [CmdletBinding(DefaultParameterSetName='/ngsiem-content/entities/savedqueries/v1:delete',SupportsShouldProcess)] param( [Parameter(ParameterSetName='/ngsiem-content/entities/savedqueries/v1:delete',Mandatory, ValueFromPipelineByPropertyName,Position=1)] [Alias('ids')] [string]$Id, [Parameter(ParameterSetName='/ngsiem-content/entities/savedqueries/v1:delete',Mandatory, ValueFromPipelineByPropertyName,Position=2)] [ValidateSet('all','dashboards','falcon','third-party',IgnoreCase=$false)] [Alias('search_domain')] [string]$Domain ) begin { $Param = @{ Command = $MyInvocation.MyCommand.Name; Endpoint = $PSCmdlet.ParameterSetName }} process { Invoke-Falcon @Param -UserInput $PSBoundParameters } } function Send-FalconNgsDashboard { <# .SYNOPSIS Create a Falcon NGSIEM dashboard from a YAML template .DESCRIPTION Requires 'NGSIEM Dashboards: Write'. .PARAMETER Name Dashboard name .PARAMETER Domain Repository or view .PARAMETER Path Path to YAML template .LINK https://github.com/crowdstrike/psfalcon/wiki/Send-FalconNgsDashboard #> [CmdletBinding(DefaultParameterSetName='/ngsiem-content/entities/dashboards-template/v1:post', SupportsShouldProcess)] param( [Parameter(ParameterSetName='/ngsiem-content/entities/dashboards-template/v1:post',Mandatory,Position=1)] [string]$Name, [Parameter(ParameterSetName='/ngsiem-content/entities/dashboards-template/v1:post',Mandatory, ValueFromPipelineByPropertyName,Position=2)] [ValidateSet('all','falcon','third-party',IgnoreCase=$false)] [Alias('search_domain')] [string]$Domain, [Parameter(ParameterSetName='/ngsiem-content/entities/dashboards-template/v1:post',Mandatory, ValueFromPipelineByPropertyName,Position=3)] [Alias('yaml_template','FullName')] [string]$Path ) begin { $Param = @{ Command = $MyInvocation.MyCommand.Name; Endpoint = $PSCmdlet.ParameterSetName }} process { Invoke-Falcon @Param -UserInput $PSBoundParameters } } function Send-FalconNgsLookupFile { <# .SYNOPSIS Create a Falcon NGSIEM lookup file from a CSV .DESCRIPTION Requires 'NGSIEM Lookup Files: Write'. .PARAMETER Filename Lookup file name .PARAMETER Domain Repository or view .PARAMETER Path Path to CSV .LINK https://github.com/crowdstrike/psfalcon/wiki/Send-FalconNgsLookupFile #> [CmdletBinding(DefaultParameterSetName='/ngsiem-content/entities/lookupfiles/v1:post',SupportsShouldProcess)] param( [Parameter(ParameterSetName='/ngsiem-content/entities/lookupfiles/v1:post',Mandatory,Position=1)] [string]$Filename, [Parameter(ParameterSetName='/ngsiem-content/entities/lookupfiles/v1:post',Mandatory, ValueFromPipelineByPropertyName,Position=2)] [ValidateSet('all','falcon','parsers-repository','third-party',IgnoreCase=$false)] [Alias('search_domain')] [string]$Domain, [Parameter(ParameterSetName='/ngsiem-content/entities/lookupfiles/v1:post',Mandatory, ValueFromPipelineByPropertyName,Position=3)] [Alias('file','FullName')] [string]$Path ) begin { $Param = @{ Command = $MyInvocation.MyCommand.Name; Endpoint = $PSCmdlet.ParameterSetName }} process { Invoke-Falcon @Param -UserInput $PSBoundParameters } } function Send-FalconNgsParser { <# .SYNOPSIS Create a Falcon NGSIEM parser from a YAML template .DESCRIPTION Requires 'NGSIEM Parsers: Write'. .PARAMETER Name Parser name .PARAMETER Repository Repository name .PARAMETER Path Path to YAML template .LINK https://github.com/crowdstrike/psfalcon/wiki/Send-FalconNgsParser #> [CmdletBinding(DefaultParameterSetName='/ngsiem-content/entities/parsers-template/v1:post', SupportsShouldProcess)] param( [Parameter(ParameterSetName='/ngsiem-content/entities/parsers-template/v1:post',Mandatory,Position=1)] [string]$Name, [Parameter(ParameterSetName='/ngsiem-content/entities/parsers-template/v1:post',Mandatory, ValueFromPipelineByPropertyName,Position=2)] [ValidateSet('parsers-repository',IgnoreCase=$false)] [string]$Repository, [Parameter(ParameterSetName='/ngsiem-content/entities/parsers-template/v1:post',Mandatory, ValueFromPipelineByPropertyName,Position=3)] [Alias('yaml_template','FullName')] [string]$Path ) begin { $Param = @{ Command = $MyInvocation.MyCommand.Name; Endpoint = $PSCmdlet.ParameterSetName }} process { Invoke-Falcon @Param -UserInput $PSBoundParameters } } function Send-FalconNgsSavedQuery { <# .SYNOPSIS Create a Falcon NGSIEM saved query from a YAML template .DESCRIPTION Requires 'NGSIEM Saved Queries: Write'. .PARAMETER Domain Repository or view .PARAMETER Path Path to YAML template .LINK https://github.com/crowdstrike/psfalcon/wiki/Send-FalconNgsSavedQuery #> [CmdletBinding(DefaultParameterSetName='/ngsiem-content/entities/savedqueries-template/v1:post', SupportsShouldProcess)] param( [Parameter(ParameterSetName='/ngsiem-content/entities/savedqueries-template/v1:post',Mandatory, ValueFromPipelineByPropertyName,Position=1)] [ValidateSet('all','falcon','third-party',IgnoreCase=$false)] [Alias('search_domain')] [string]$Domain, [Parameter(ParameterSetName='/ngsiem-content/entities/savedqueries-template/v1:post',Mandatory, ValueFromPipelineByPropertyName,Position=2)] [Alias('yaml_template','FullName')] [string]$Path ) begin { $Param = @{ Command = $MyInvocation.MyCommand.Name; Endpoint = $PSCmdlet.ParameterSetName }} process { Invoke-Falcon @Param -UserInput $PSBoundParameters } } function Update-FalconNgsDashboard { <# .SYNOPSIS Update a Falcon NGSIEM dashboard using a YAML template .DESCRIPTION Requires 'NGSIEM Dashboards: Write'. .PARAMETER Id Dashboard identifier .PARAMETER Domain Repository or view .PARAMETER Path Path to YAML template .LINK https://github.com/crowdstrike/psfalcon/wiki/Update-FalconNgsDashboard #> [CmdletBinding(DefaultParameterSetName='/ngsiem-content/entities/dashboards-template/v1:patch', SupportsShouldProcess)] param( [Parameter(ParameterSetName='/ngsiem-content/entities/dashboards-template/v1:patch',Mandatory, ValueFromPipelineByPropertyName,Position=1)] [Alias('ids')] [string]$Id, [Parameter(ParameterSetName='/ngsiem-content/entities/dashboards-template/v1:patch',Mandatory, ValueFromPipelineByPropertyName,Position=2)] [ValidateSet('all','falcon','parsers-repository','third-party',IgnoreCase=$false)] [Alias('search_domain')] [string]$Domain, [Parameter(ParameterSetName='/ngsiem-content/entities/dashboards-template/v1:patch',Mandatory, ValueFromPipelineByPropertyName,Position=3)] [Alias('yaml_template','FullName')] [string]$Path ) begin { $Param = @{ Command = $MyInvocation.MyCommand.Name; Endpoint = $PSCmdlet.ParameterSetName }} process { Invoke-Falcon @Param -UserInput $PSBoundParameters } } function Update-FalconNgsLookupFile { <# .SYNOPSIS Update a Falcon NGSIEM lookup file using a YAML template .DESCRIPTION Requires 'NGSIEM Lookup Files: Write'. .PARAMETER Id Lookup file identifier .PARAMETER Domain Repository or view .PARAMETER Path Path to YAML template .LINK https://github.com/crowdstrike/psfalcon/wiki/Update-FalconNgsLookupFile #> [CmdletBinding(DefaultParameterSetName='/ngsiem-content/entities/lookupfiles/v1:patch',SupportsShouldProcess)] param( [Parameter(ParameterSetName='/ngsiem-content/entities/lookupfiles/v1:patch',Mandatory, ValueFromPipelineByPropertyName,Position=1)] [string]$Filename, [Parameter(ParameterSetName='/ngsiem-content/entities/lookupfiles/v1:patch',Mandatory, ValueFromPipelineByPropertyName,Position=2)] [ValidateSet('all','falcon','parsers-repository','third-party',IgnoreCase=$false)] [Alias('search_domain')] [string]$Domain, [Parameter(ParameterSetName='/ngsiem-content/entities/lookupfiles/v1:patch',Mandatory, ValueFromPipelineByPropertyName,Position=3)] [Alias('file','FullName')] [string]$Path ) begin { $Param = @{ Command = $MyInvocation.MyCommand.Name; Endpoint = $PSCmdlet.ParameterSetName }} process { Invoke-Falcon @Param -UserInput $PSBoundParameters } } function Update-FalconNgsSavedQuery { <# .SYNOPSIS Update a Falcon NGSIEM saved query using a YAML template .DESCRIPTION Requires 'NGSIEM Saved Queries: Write'. .PARAMETER Id Saved query identifier .PARAMETER Domain Repository or view .PARAMETER Path Path to YAML template .LINK https://github.com/crowdstrike/psfalcon/wiki/Update-FalconNgsSavedQuery #> [CmdletBinding(DefaultParameterSetName='/ngsiem-content/entities/savedqueries-template/v1:patch', SupportsShouldProcess)] param( [Parameter(ParameterSetName='/ngsiem-content/entities/savedqueries-template/v1:patch',Mandatory, ValueFromPipelineByPropertyName,Position=1)] [Alias('ids')] [string]$Id, [Parameter(ParameterSetName='/ngsiem-content/entities/savedqueries-template/v1:patch',Mandatory, ValueFromPipelineByPropertyName,Position=2)] [ValidateSet('all','falcon','third-party',IgnoreCase=$false)] [Alias('search_domain')] [string]$Domain, [Parameter(ParameterSetName='/ngsiem-content/entities/savedqueries-template/v1:patch',Mandatory, ValueFromPipelineByPropertyName,Position=3)] [Alias('yaml_template','FullName')] [string]$Path ) begin { $Param = @{ Command = $MyInvocation.MyCommand.Name; Endpoint = $PSCmdlet.ParameterSetName }} process { Invoke-Falcon @Param -UserInput $PSBoundParameters } } |