$user = "1" $pass = "2" $secpasswd = ConvertTo-SecureString $pass -AsPlainText -Force $credential = New-Object –TypeName "System.Management.Automation.PSCredential" –ArgumentList $user, $secpasswd $baseUrl = "https://test.cloudapp.azure.com" function Get-RootWebStatus($baseUrl) { $KeepLooking = $true # Should we continue to retry? $counter = 1 # How many times we've tried $RetryLimit = 5 # Max number of retries $SleepInterval = 5 # How long to sleep between retries $StartTime = Get-Date # When we started while ($KeepLooking) { write-output "$(Get-Date -format 'g') - Querying $baseUrl to see if available." try { $response = Invoke-WebRequest $baseUrl write-output "$(Get-Date -format 'g') - Web request status: $($Response.Statuscode)" if ($Response.Statuscode -eq 200) { write-output "$(Get-Date -format 'g') - Web site is alive!" $KeepLooking = $false continue } } catch { write-output "$(Get-Date -format 'g') - Error! $($_.Exception.Message)" } $counter++ | Out-Null if ($counter -gt $RetryLimit) { write-output "$(Get-Date -format 'g') - RetryLimit exceeded. Giving up.." $KeepLooking = $false continue } start-sleep $SleepInterval } write-output "$(Get-Date -format 'g') - Execution time was $((New-TimeSpan -start $StartTime -end (Get-Date)).seconds) seconds" } Get-RootWebStatus $baseUrl # Base Url status is completed, Once it is passed, it should check for the login credentials. $suburl = Get-Content -Raw -Path "C:\pipelinetask\suburl.json" | ConvertFrom-Json $Loginpage = $baseUrl+$suburl.Login.url Write-Host "Login page Url is $Loginpage" $params = @{uri = $Loginpage; Method = 'POST'; #(or POST, or whatever) Headers = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("$($user):$($secpasswd)")); } #end headers hash table } #end $params hash table $var = Invoke-RestMethod @params $var1 = Invoke-WebRequest @params $var Write-Host "Authentication Done" # Need to check the other suburls after Login is successful and authenticated with correct username/password #We need to provide if condition here if the login is successfully authenticated $suburl = Get-Content -Raw -Path "C:\pipelinetask\suburl.json" | ConvertFrom-Json function Get-SubUrlResponse($hostUri, $Relativeurl, $authHeader) { $requestUri = $hostUri+$Relativeurl $attempts = 5 for ($i = 1; $i -le $attempts; $i++) { try { $reply = Invoke-WebRequest -Uri $requestUri -Method GET # -ErrorAction STOP Write-Host "$($i) attempt = Request $($requestUri) " if ($reply.StatusCode -eq 200) { Write-Host "$($i) attempt = Request StatusCode: $($reply.StatusCode), done!" -ForegroundColor DarkGreen break; } else { Write-Host "$($i) attempt = Request StatusCode: $($reply.StatusCode), :-( " -ForegroundColor DarkYellow } } catch { $attempts = $i # preserve the number of tries Write-Host "Error: $($_.Exception)" -ForegroundColor Red } Write-Host "waiting $($intervalSec) sec till next attempt." Start-Sleep -Seconds $intervalSec } } foreach ($url in $suburl.urls) { $resultVar = Get-SubUrlResponse $baseUrl $url.url }