Basically there is a requirement, where i need to login to a web portal by passing on credentials through windows security pop up (like what we have to login for tomcat admin service console) & then click on a reload button on the next screen.
The script for clicking on the Reload button works fine but the problem is i have to manually login through the windows pop up & keep one active session open all the time & this is not possible when i want to add this script to a task scheduler.
The moment it tries to open http://localhost:9001/test/Admin/RuntimeParameters.jsp this is where it pops up with the windows security box & there is no way known to me to pass on the creds to this section. I need help for this piece.
$ie = New-Object -com InternetExplorer.Application
$ie.visible=$false
$ie.navigate("http://localhost:9001/test/Admin/RuntimeParameters.jsp")
start-sleep 4
while($ie.ReadyState -ne 4) {start-sleep -m 100}
$ie.document.getElementById("Reload").Click()
if ($? -eq "True")
{
Write-host "Reload of the Admin page completed successfully" -ForegroundColor green
Write-output "Reload of the Admin page completed successfully"
exit
}
else
{
Write-host "Reload of the Admin page Failed" -ForegroundColor red
Write-output "Error: Reload of the Admin page Failed"
exit
}
So i need help to know as how can we pass on credentials through PS script to login through a windows security pop up window not sure how PS can interact with this pop up window.
Thanks for checking & providing expert advise.
You can try to pass username and password in the URL.
Example:
http://monitoruser:Pa55w0rd@localhost:9001/test/Admin/RuntimeParameters.jsp
Just make sure the username and password don’t include the following single characters
: @ /
The other alternative would be to use the Invoke-WebRequest cmdlet if you don’t need to display the page on a screen.
$creds = Get-Credential
$response = Invoke-WebRequest -UseBasicParsing -Uri http://localhost:9001/test/Admin/RuntimeParameters.jsp -Credential $creds
# do something with the response
Thanks Daniel for the response but it seems, current version of IE doesn’t support this method of passing on the creds through URL anymore
Hi Daniel, instead of Invoke-WebRequest i tried this which allows to login & allows to fetch the web page code details instead of popping up the web page itself.
$url = "http://localhost:9001/test/Admin/RuntimeParameters.jsp"
$user = "username"
$pass = "pass"
$secPass = convertTo-secureString $pass -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential($user,$secPass)
$data = Invoke-RestMethod $url -Credential $cred
However, is there way to open the web page after it logs in like i had $url.visible=$true using $ie = New-Object -com InternetExplorer.Application & the navigating to this URL. I guess we cannot merge two invoke requests in the same method.
Please advise.
I can use both the invoke methods & assume am able to login fine but that’s all happening in the background.
The requirement is to click on a particular button on this web page after i am logged in into this webpage.
Tried both & get runtime error
$url = "http://localhost:9001/test/Admin/RuntimeParameters.jsp"
$user = "username"
$pass = "pass"
$secPass = convertTo-secureString $pass -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential($user,$secPass)
$response = Invoke-WebRequest -UseBasicParsing -Uri $url -Credential $cred
Write-host $response.StatusCode
$Link=$response.Document.getElementByID("Reload").Click
Also tried -
$Link=$response.Document.getElementsByTagName("input") | where-object {$_.type -eq "submit"}
$Link.click()
I am trying to click The actual button from the html code from the web page is
form action = "#" method="POST"
input type="submit" value="Reload" name="Reload"
Thanks for the update. I think you’ll need to look at Selenium which is web browser automation framework (http://www.seleniumhq.org/) and it is free as far as I know.
Have you tried
Get-Credential | Export-Clixml -Path
This will bring up the UN/PW windows dialogue box. When you enter your credentials, this will write the UN and PW to an encrypted text file (as stipulated by your given path). For instance
Get-Credential | Export-Clixml -Path C:\Cred\EncryptedCredentials.txt
You can then add the content of this file to a variable in your script.
$MyCredential = Import-Clixml -Path C:\Cred\EncryptedCredentials.txt
Which can later be refeferenced by a -credentials parameter in your script.
This works fine for me when running scripts that need to authenticate against an externeal FTP server.
Caveat: The acount you are logged in within when you create the encrypted credentials will need to be the same account you want to run the scripts under.
*need to run the scripts under.