Functions/GenXdev.Queries.Webbrowser/Open-WhoisHostSiteInfo.ps1
################################################################################ <# .SYNOPSIS Opens a Whois host information query in a web browser. .DESCRIPTION Opens Whois host information queries in a web browser for domain names or IP addresses. Supports configurable monitor selection and multiple queries with extensive browser configuration options including window positioning, browser selection, and automation features. .PARAMETER Queries One or more domain names or IP addresses to look up Whois information for. Accepts pipeline input and supports multiple queries simultaneously. .PARAMETER Language The language for the returned search results. Affects the browser's Accept-Language header and website localization. .PARAMETER Private Opens the browser in private/incognito browsing mode for enhanced privacy. .PARAMETER Force Forces enabling of the debugging port by stopping existing browser instances if needed. .PARAMETER Edge Specifically opens URLs in Microsoft Edge browser. .PARAMETER Chrome Specifically opens URLs in Google Chrome browser. .PARAMETER Chromium Opens URLs in either Microsoft Edge or Google Chrome, depending on which is set as the default browser. .PARAMETER Firefox Specifically opens URLs in Mozilla Firefox browser. .PARAMETER All Opens the specified URLs in all installed modern browsers simultaneously. .PARAMETER Monitor Specifies which monitor to display results on: 0 = Default monitor -1 = Discard positioning -2 = Configured secondary monitor .PARAMETER FullScreen Opens the browser in fullscreen mode using F11 key simulation. .PARAMETER Width The initial width of the browser window in pixels. .PARAMETER Height The initial height of the browser window in pixels. .PARAMETER X The initial X coordinate for window placement. .PARAMETER Y The initial Y coordinate for window placement. .PARAMETER Left Positions the browser window on the left half of the screen. .PARAMETER Right Positions the browser window on the right half of the screen. .PARAMETER Top Positions the browser window on the top half of the screen. .PARAMETER Bottom Positions the browser window on the bottom half of the screen. .PARAMETER Centered Centers the browser window on the screen using 80% of the screen dimensions. .PARAMETER ApplicationMode Hides browser controls for a distraction-free experience. .PARAMETER NoBrowserExtensions Prevents loading of browser extensions during the session. .PARAMETER DisablePopupBlocker Disables the browser's popup blocking functionality. .PARAMETER AcceptLang Sets the browser's Accept-Language HTTP header for internationalization. .PARAMETER KeysToSend Keystrokes to send to the browser window after opening. Uses the same format as the GenXdev.Windows\Send-Key cmdlet. .PARAMETER FocusWindow Gives focus to the browser window after opening. .PARAMETER SetForeground Brings the browser window to the foreground after opening. .PARAMETER Maximize Maximizes the browser window after positioning. .PARAMETER RestoreFocus Returns focus to the PowerShell window after opening the browser. .PARAMETER NewWindow Forces creation of a new browser window instead of reusing existing windows. .PARAMETER PassThru Returns a PowerShell process object representing the browser process. .PARAMETER ReturnURL Returns the formatted URL without opening the browser. .PARAMETER ReturnOnlyURL Returns the formatted URL after opening the browser. .PARAMETER SendKeyEscape Escapes control characters when sending keystrokes to the browser. .PARAMETER SendKeyHoldKeyboardFocus Prevents returning keyboard focus to PowerShell after sending keystrokes. .PARAMETER SendKeyUseShiftEnter Uses Shift+Enter instead of regular Enter for line breaks when sending keys. .PARAMETER SendKeyDelayMilliSeconds Delay between sending different key sequences in milliseconds. .EXAMPLE Open-WhoisHostSiteInfo -Queries "example.com", "example.org" -Monitor 0 Opens Whois information for multiple domains on the default monitor. .EXAMPLE whois example.com -m 1 Opens Whois information for example.com using aliases and positional parameters. .EXAMPLE "microsoft.com", "google.com" | Open-WhoisHostSiteInfo -Private -Chrome Opens Whois information for domains from pipeline in Chrome private mode. #> function Open-WhoisHostSiteInfo { [CmdletBinding()] [Alias('whois')] param( ######################################################################## [Alias('q', 'Name', 'Text', 'Query')] [Parameter( Mandatory = $true, Position = 0, ValueFromRemainingArguments = $false, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, HelpMessage = 'The query to execute.' )] [string[]] $Queries, ############################################################################### [ValidateSet( 'Afrikaans', 'Akan', 'Albanian', 'Amharic', 'Arabic', 'Armenian', 'Azerbaijani', 'Basque', 'Belarusian', 'Bemba', 'Bengali', 'Bihari', 'Bork, bork, bork!', 'Bosnian', 'Breton', 'Bulgarian', 'Cambodian', 'Catalan', 'Cherokee', 'Chichewa', 'Chinese (Simplified)', 'Chinese (Traditional)', 'Corsican', 'Croatian', 'Czech', 'Danish', 'Dutch', 'Elmer Fudd', 'English', 'Esperanto', 'Estonian', 'Ewe', 'Faroese', 'Filipino', 'Finnish', 'French', 'Frisian', 'Ga', 'Galician', 'Georgian', 'German', 'Greek', 'Guarani', 'Gujarati', 'Hacker', 'Haitian Creole', 'Hausa', 'Hawaiian', 'Hebrew', 'Hindi', 'Hungarian', 'Icelandic', 'Igbo', 'Indonesian', 'Interlingua', 'Irish', 'Italian', 'Japanese', 'Javanese', 'Kannada', 'Kazakh', 'Kinyarwanda', 'Kirundi', 'Klingon', 'Kongo', 'Korean', 'Krio (Sierra Leone)', 'Kurdish', 'Kurdish (Soranî)', 'Kyrgyz', 'Laothian', 'Latin', 'Latvian', 'Lingala', 'Lithuanian', 'Lozi', 'Luganda', 'Luo', 'Macedonian', 'Malagasy', 'Malay', 'Malayalam', 'Maltese', 'Maori', 'Marathi', 'Mauritian Creole', 'Moldavian', 'Mongolian', 'Montenegrin', 'Nepali', 'Nigerian Pidgin', 'Northern Sotho', 'Norwegian', 'Norwegian (Nynorsk)', 'Occitan', 'Oriya', 'Oromo', 'Pashto', 'Persian', 'Pirate', 'Polish', 'Portuguese (Brazil)', 'Portuguese (Portugal)', 'Punjabi', 'Quechua', 'Romanian', 'Romansh', 'Runyakitara', 'Russian', 'Scots Gaelic', 'Serbian', 'Serbo-Croatian', 'Sesotho', 'Setswana', 'Seychellois Creole', 'Shona', 'Sindhi', 'Sinhalese', 'Slovak', 'Slovenian', 'Somali', 'Spanish', 'Spanish (Latin American)', 'Sundanese', 'Swahili', 'Swedish', 'Tajik', 'Tamil', 'Tatar', 'Telugu', 'Thai', 'Tigrinya', 'Tonga', 'Tshiluba', 'Tumbuka', 'Turkish', 'Turkmen', 'Twi', 'Uighur', 'Ukrainian', 'Urdu', 'Uzbek', 'Vietnamese', 'Welsh', 'Wolof', 'Xhosa', 'Yiddish', 'Yoruba', 'Zulu')] [parameter( Mandatory = $false, Position = 2, HelpMessage = 'The language of the returned search results' )] [string] $Language, ######################################################################## [Parameter( Mandatory = $false, HelpMessage = 'Opens in incognito/private browsing mode' )] [Alias('incognito', 'inprivate')] [switch] $Private, ############################################################################### [Parameter( Mandatory = $false, HelpMessage = 'Force enable debugging port, stopping existing browsers if needed' )] [switch] $Force, ############################################################################### [Alias('e')] [Parameter( Mandatory = $false, HelpMessage = 'Opens in Microsoft Edge' )] [switch] $Edge, ############################################################################### [Alias('ch')] [Parameter( Mandatory = $false, HelpMessage = 'Opens in Google Chrome' )] [switch] $Chrome, ############################################################################### [Alias('c')] [Parameter( Mandatory = $false, HelpMessage = 'Opens in Microsoft Edge or Google Chrome, depending on what the default browser is' )] [switch] $Chromium, ############################################################################### [Alias('ff')] [Parameter( Mandatory = $false, HelpMessage = 'Opens in Firefox' )] [switch] $Firefox, ############################################################################### [Parameter( Mandatory = $false, HelpMessage = 'Opens in all registered modern browsers' )] [switch] $All, ############################################################################### [Alias('m', 'mon')] [Parameter( Mandatory = $false, HelpMessage = 'The monitor to use, 0 = default, -1 is discard, -2 = Configured secondary monitor, defaults to -1, no positioning' )] [int] $Monitor = -1, ############################################################################### [Alias('fs', 'f')] [Parameter( Mandatory = $false, HelpMessage = 'Opens in fullscreen mode' )] [switch] $FullScreen, ############################################################################### [Parameter( Mandatory = $false, HelpMessage = 'The initial width of the webbrowser window' )] [int] $Width = -1, ############################################################################### [Parameter( Mandatory = $false, HelpMessage = 'The initial height of the webbrowser window' )] [int] $Height = -1, ############################################################################### [Parameter( Mandatory = $false, HelpMessage = 'The initial X position of the webbrowser window' )] [int] $X = -999999, ############################################################################### [Parameter( Mandatory = $false, HelpMessage = 'The initial Y position of the webbrowser window' )] [int] $Y = -999999, ############################################################################### [Parameter( Mandatory = $false, HelpMessage = 'Place browser window on the left side of the screen' )] [switch] $Left, ############################################################################### [Parameter( Mandatory = $false, HelpMessage = 'Place browser window on the right side of the screen' )] [switch] $Right, ############################################################################### [Parameter( Mandatory = $false, HelpMessage = 'Place browser window on the top side of the screen' )] [switch] $Top, ############################################################################### [Parameter( Mandatory = $false, HelpMessage = 'Place browser window on the bottom side of the screen' )] [switch] $Bottom, ############################################################################### [Parameter( Mandatory = $false, HelpMessage = 'Place browser window in the center of the screen' )] [switch] $Centered, ############################################################################### [Alias('a', 'app', 'appmode')] [Parameter( Mandatory = $false, HelpMessage = 'Hide the browser controls' )] [switch] $ApplicationMode, ############################################################################### [Alias('de', 'ne', 'NoExtensions')] [Parameter( Mandatory = $false, HelpMessage = 'Prevent loading of browser extensions' )] [switch] $NoBrowserExtensions, ############################################################################### [Parameter( Mandatory = $false, HelpMessage = 'Disable the popup blocker' )] [Alias('allowpopups')] [switch] $DisablePopupBlocker, ############################################################################### [Alias('lang', 'locale')] [Parameter( Mandatory = $false, HelpMessage = 'Set the browser accept-lang http header' )] [string] $AcceptLang = $null, ########################################################################### [Parameter( Mandatory = $false, HelpMessage = ('Keystrokes to send to the Browser window, ' + 'see documentation for cmdlet GenXdev.Windows\Send-Key') )] [string[]] $KeysToSend, ######################################################################## [Parameter( Mandatory = $false, HelpMessage = 'Focus the browser window after opening' )] [Alias('fw', 'focus')] [switch] $FocusWindow, ######################################################################## [Parameter( Mandatory = $false, HelpMessage = 'Set the browser window to foreground after opening' )] [Alias('fg')] [switch] $SetForeground, ######################################################################## [Parameter( Mandatory = $false, HelpMessage = 'Maximize the window after positioning' )] [switch] $Maximize, ############################################################################### [Alias('rf', 'bg')] [Parameter( Mandatory = $false, HelpMessage = 'Restore PowerShell window focus' )] [switch] $RestoreFocus, ############################################################################### [Alias('nw', 'new')] [Parameter( Mandatory = $false, HelpMessage = "Don't re-use existing browser window, instead, create a new one" )] [switch] $NewWindow, ############################################################################### [Parameter( Mandatory = $false, HelpMessage = 'Returns a [System.Diagnostics.Process] object of the browserprocess' )] [Alias('pt')] [switch] $PassThru, ######################################################################## [parameter( Mandatory = $false, HelpMessage = "Don't open webbrowser, just return the url" )] [switch] $ReturnURL, ######################################################################## [parameter( Mandatory = $false, HelpMessage = 'After opening webbrowser, return the url' )] [switch] $ReturnOnlyURL, ######################################################################## [Parameter( Mandatory = $false, HelpMessage = 'Escape control characters when sending keys' )] [Alias('Escape')] [switch] $SendKeyEscape, ######################################################################## [Parameter( Mandatory = $false, HelpMessage = ('Prevent returning keyboard focus to PowerShell ' + 'after sending keys') )] [Alias('HoldKeyboardFocus')] [switch] $SendKeyHoldKeyboardFocus, ######################################################################## [Parameter( Mandatory = $false, HelpMessage = ('Send Shift+Enter instead of regular Enter for ' + 'line breaks') )] [Alias('UseShiftEnter')] [switch] $SendKeyUseShiftEnter, ######################################################################## [Parameter( Mandatory = $false, HelpMessage = ('Delay between sending different key sequences ' + 'in milliseconds') )] [Alias('DelayMilliSeconds')] [int] $SendKeyDelayMilliSeconds, ############################################################################### [Parameter( Mandatory = $false, HelpMessage = 'Removes the borders of the browser window.' )] [Alias('nb')] [switch] $NoBorders, ############################################################################### [Parameter( Mandatory = $false, HelpMessage = ('Use alternative settings stored in session for AI ' + 'preferences like Language, Image collections, etc.') )] [switch] $SessionOnly, ############################################################################### [Parameter( Mandatory = $false, HelpMessage = ('Clear alternative settings stored in session for AI ' + 'preferences like Language, Image collections, etc.') )] [switch] $ClearSession, ############################################################################### [Parameter( Mandatory = $false, HelpMessage = ('Store settings only in persistent preferences without ' + 'affecting session for AI preferences like Language, Image ' + 'collections, etc.') )] [Alias('FromPreferences')] [switch] $SkipSession, ######################################################################## [Parameter( Mandatory = $false, HelpMessage = 'Position browser window either fullscreen on different monitor than PowerShell, or side by side with PowerShell on the same monitor.' )] [Alias('sbs')] [switch] $SideBySide ######################################################################## ) begin { # Copy identical parameters between functions $invocationArguments = GenXdev.Helpers\Copy-IdenticalParamValues ` -FunctionName 'GenXdev.Webbrowser\Open-Webbrowser' ` -BoundParameters $PSBoundParameters ` -DefaultValues (Microsoft.PowerShell.Utility\Get-Variable ` -Scope Local ` -ErrorAction SilentlyContinue) # process language setting if specified if (-not [string]::IsNullOrWhiteSpace($Language)) { # retrieve the language code from the language dictionary $code = (GenXdev.Helpers\Get-WebLanguageDictionary)[$Language] # set accept-lang header if not already specified if (-not $PSBoundParameters.ContainsKey('AcceptLang')) { $null = $invocationArguments.AcceptLang = $code } } } process { # process each search query foreach ($query in $Queries) { # output verbose information about the query being processed Microsoft.PowerShell.Utility\Write-Verbose "Processing query: $query" # construct the domaintools whois url for the query $whoisUrl = ( 'https://whois.domaintools.com/' + [Uri]::EscapeUriString($query) ) # handle return url only scenario if ($ReturnOnlyURL) { # output the url without opening browser Microsoft.PowerShell.Utility\Write-Output $whoisUrl continue } # launch browser with the constructed url GenXdev.Webbrowser\Open-Webbrowser @invocationArguments -Url $whoisUrl # return url if requested if ($ReturnURL) { # output the url after opening browser Microsoft.PowerShell.Utility\Write-Output $whoisUrl } } } end { } } ################################################################################ |