public/Get-OsQueryTableSample.ps1

function Get-OsQueryTableSample {
    <#
    .SYNOPSIS
    Retrieves a sample query for a specified osquery table.

    .DESCRIPTION
    The Get-OsQueryTableSample function takes the name of an osquery table as input and returns a sample SQL query that can be used to query that table.

    .PARAMETER TableName
    The name of the osquery table for which to retrieve a sample query.

    .PARAMETER Limit
    (Optional) The number of rows to limit the query results to. Default is 10.

    .EXAMPLE
    Get-OsQueryTableSample -TableName "processes"

    This command retrieves a sample query for the "processes" table.

    .EXAMPLE
    Get-OsQueryTableSample -TableName "users" -Limit 5

    This command retrieves a sample query for the "users" table, limiting the results to 5 rows.

    .NOTES
    For Windows platforms, an interactive grid view is provided for table selection.
    For non-Windows platforms, the function checks for the presence of 'helium' or 'Microsoft.PowerShell.ConsoleGuiTools' modules to provide a grid view selection.
    #>

    [CmdletBinding()]
    param (
        [Parameter(Mandatory = $false)][string]$TableName,
        [Parameter(Mandatory = $false)][int]$Limit = 10
    )
    $tables = Get-OsQuerySchema
    if ($tables.Count -eq 0) {
        Write-Error "No osquery tables found. Ensure osquery is installed and accessible."
        return
    }
    if ($IsWindows) {
        $table = $tables | Out-GridView -Title "Select a Table to Query" -OutputMode Single
    } else {
        if (Get-Module -Name helium -ListAvailable) {
            $table = Out-GridSelect -InputObject $tables -Title "Select a Table to Query"
        } elseif (Get-Module -Name Microsoft.PowerShell.ConsoleGuiTools -ListAvailable) {
            $table = $tables | Out-ConsoleGridView -Title "Select a Table to Query" -OutputMode Single
        } else {
            Write-Warning "For an enhanced selection experience, consider installing the 'helium' or 'Microsoft.PowerShell.ConsoleGuiTools' module."
        }
    }
    if ($table) {
        $query = "SELECT * FROM $($table.name) LIMIT $Limit;"
        Write-Output $query
        Invoke-OsQueryTableQuery -Query $query
    } else {
        Write-Error "No table selected."
    }
}