Functions/GenXdev.Webbrowser/Open-BrowserBookmarks.ps1
################################################################################ <# .SYNOPSIS Opens bookmarks from various browsers based on search queries. .DESCRIPTION Opens browser bookmarks matching specified search queries in the selected browser. Supports Microsoft Edge, Google Chrome, and Mozilla Firefox. .PARAMETER Queries Search terms to filter bookmarks. .PARAMETER Edge Select bookmarks from Microsoft Edge. .PARAMETER Chrome Select bookmarks from Google Chrome. .PARAMETER Firefox Select bookmarks from Mozilla Firefox. .PARAMETER OpenInEdge Open found bookmarks in Microsoft Edge. .PARAMETER OpenInChrome Open found bookmarks in Google Chrome. .PARAMETER OpenInFirefox Open found bookmarks in Mozilla Firefox. .PARAMETER Monitor The monitor to display on. 0=default, -1=discard, -2=secondary monitor. .PARAMETER Count Maximum number of bookmarks to open. .EXAMPLE Open-BrowserBookmarks -Query "github" -Edge -OpenInChrome -Count 5 .EXAMPLE sites gh -e -och -Count 5 #> function Open-BrowserBookmarks { [CmdletBinding(DefaultParameterSetName = 'Default')] [Alias("sites")] param ( ############################################################################### [parameter( Mandatory = $false, Position = 0, ValueFromRemainingArguments, ValueFromPipeline, ValueFromPipelineByPropertyName, HelpMessage = "Search terms to filter bookmarks" )] [Alias("q", "Value", "Name", "Text", "Query")] [string[]] $Queries, ############################################################################### [parameter( Mandatory = $false, HelpMessage = "Select in Microsoft Edge" )] [Alias("e")] [switch] $Edge, ############################################################################### [parameter( Mandatory = $false, HelpMessage = "Select in Google Chrome" )] [Alias("ch")] [switch] $Chrome, ############################################################################### [parameter( Mandatory = $false, HelpMessage = "Select in Firefox" )] [Alias("ff")] [switch] $Firefox, ############################################################################### [parameter( Mandatory = $false, HelpMessage = "Open urls in Microsoft Edge" )] [Alias("oe")] [switch] $OpenInEdge, ############################################################################### [parameter( Mandatory = $false, HelpMessage = "Open urls in Google Chrome" )] [Alias("och")] [switch] $OpenInChrome, ############################################################################### [parameter( Mandatory = $false, HelpMessage = "Open urls in Firefox" )] [Alias("off")] [switch] $OpenInFirefox, ############################################################################### [parameter( Mandatory = $false, HelpMessage = "Monitor to use (0=default, -1=discard, -2=secondary)" )] [Alias("m", "mon")] [int] $Monitor = -1, ############################################################################### [parameter( Mandatory = $false, HelpMessage = "Maximum number of urls to open" )] [int] $Count = 50 ############################################################################### ) DynamicParam { Copy-CommandParameters -CommandName "Open-Webbrowser" ` -ParametersToSkip "Queries", "Chrome", "Edge", "FireFox", "Url", "Monitor" } begin { # prepare parameters for Open-Webbrowser $boundParams = @{} $boundParams["Monitor"] = $Monitor if ($OpenInEdge) { $boundParams["Edge"] = $true } if ($OpenInChrome) { $boundParams["Chrome"] = $true } if ($OpenInFirefox) { $boundParams["Firefox"] = $true } # copy remaining parameters foreach ($key in $PSBoundParameters.Keys) { if ($key -notin @('Queries','Chrome','Firefox','Edge','Count', 'OpenInEdge','OpenInChrome','OpenInFirefox','Monitor')) { $boundParams[$key] = $PSBoundParameters[$key] } } Write-Verbose "Initialized parameters for browser opening" } process { # prepare parameters for finding bookmarks $findParams = @{ PassThru = $true Queries = $Queries } if ($Chrome) { $findParams["Chrome"] = $true } if ($Edge) { $findParams["Edge"] = $true } if ($Firefox) { $findParams["Firefox"] = $true } Write-Verbose "Searching for bookmarks with specified criteria" # find and collect urls $urls = @(Find-BrowserBookmarks @findParams | ForEach-Object Url | Select-Object -First $Count) if ($urls.Length -eq 0) { Write-Host "No bookmarks found matching the criteria" return } Write-Verbose "Found $($urls.Length) matching bookmarks" # open urls in specified browser $boundParams["Url"] = $urls Open-Webbrowser @boundParams } end { } } ################################################################################ |