Functions/GenXdev.Queries.Webbrowser/Open-WebsiteAndPerformQuery.ps1
################################################################################ <# .SYNOPSIS Opens a webpage in a webbrowser and performs a query .DESCRIPTION Opens a website by Url in the webbrowser, it types in a query and presses enter. .PARAMETER Url The url of the website to open .PARAMETER Queries The query to perform #> function Open-WebsiteAndPerformQuery { [CmdletBinding()] param( ############################################################################### [Alias("u", "uri", "link", "address", "site")] [parameter( Mandatory, Position = 0, ValueFromRemainingArguments, ValueFromPipeline, ValueFromPipelineByPropertyName, HelpMessage = "The url of the website to open" )] [string] $Url, ############################################################################### [parameter( Mandatory, Position = 0, ValueFromRemainingArguments, ValueFromPipeline, ValueFromPipelineByPropertyName, HelpMessage = "The query to perform" )] [string[]] $Queries, ############################################################################### [Alias("m", "mon")] [parameter( Mandatory = $false, HelpMessage = "The monitor to use, 0 = default, -1 is discard, -2 = Configured secondary monitor" )] [int] $Monitor = -1 ############################################################################### ) DynamicParam { Copy-CommandParameters -CommandName "Open-Webbrowser" -ParametersToSkip "Url", "Monitor", "RestoreFocus" } begin { if ($PSBoundParameters.ContainsKey("Queries")) { $PSBoundParameters.Remove("Queries") | Out-Null; } if (-not $PSBoundParameters.ContainsKey("Url")) { $PSBoundParameters.Add("Url", "Url") | Out-Null; } else { $PSBoundParameters["Url"] = "Url"; } if (-not $PSBoundParameters.ContainsKey("Monitor")) { $PSBoundParameters.Add("Monitor", $Monitor); } else { $PSBoundParameters["Monitor"] = $Monitor; } if ($PSBoundParameters.ContainsKey("PassThru") -eq $true) { $PSBoundParameters.Add("PassThru", $true); } else { $PSBoundParameters.Add("PassThru", $true) | Out-Null; } if (-not $PSBoundParameters.ContainsKey("RestoreFocus")) { $PSBoundParameters.Add("RestoreFocus", $false) | Out-Null; } else { $PSBoundParameters["RestoreFocus"] = $false; } } process { foreach ($Query in $Queries) { $PSBoundParameters["Url"] = $Url; $p = Open-Webbrowser @PSBoundParameters | Select-Object -First 1 Start-Sleep 6 | Out-Null if ($null -ne $p) { # [Console]::WriteLine("Process found: {0}", $p.Id) Set-ForegroundWindow ($p.MainWindowHandle) | Out-Null Send-Keys -Keys $Query -Escape -ShiftEnter } else { # [Console]::WriteLine("No Process found"); Send-Keys -Keys $Query -Escape -ShiftEnter } Send-Keys "{ENTER}"; } } } |