Recently we were tasked with testing connectivity with Good For Enterprise servers. Since the environment is highly secure it requires proxy to go out. As we had to test connectivity on over 40 servers for multiple proxies and multiple URL's we had to find a simple, yet efficient way to do this.
After some quick scripting following script has shown to be very useful in this task.
# Proxy servers in format: https://<url>:<port>. Can be multiple Proxy servers used by comma separation
$proxy_servers = "https://surf.proxy:8080";# , "https://server1.testproxy:8080";
# URL's to be tested thru Proxy.
$urls = "https://xml28.good.com";, "https://xml29.good.com"; #,"https://xml30.good.com"; ,"https://gti01.good.com","https://www.good.com", "https://upl01.good.com", "https://ws.good.com";
# ComputerName of tested machine
Write-Host "Testing script on machine: " $env:COMPUTERNAME
function DoWork {
# Test URL's without PROXY first
foreach ($url in $urls) {
TestWithoutProxy -URL $url
}
# Test URL's with Proxy
foreach ($proxy_serv in $proxy_servers) {
foreach ($url in $urls) {
TestProxy -ProxyServer $proxy_serv -URL $url
}
}
}
function TestWithoutProxy {
param (
[Parameter(Mandatory=$true,
ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true,
Position=0)]
[Alias("U")] [string]$url
)
$WebClientWithoutProxy = New-Object System.Net.WebClient
Write-Host -NoNewLine "Testing without proxy server " -ForegroundColor Yellow
Write-Host -NoNewLine " [*] URL test without Proxy -" $url -ForegroundColor White
Try {
$contentWithouProxy = $WebClientWithoutProxy.DownloadString($url)
Write-Host -NoNewline " [+] Opened $url successfully without Proxy"
}catch {
Write-Host -NoNewLine " [-] Unable to access $url without Proxy" -ForegroundColor Red
}
Write-Host " [*]"
}
function TestProxy {
param (
[Parameter(Mandatory=$true,
ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true,
Position=0)]
[Alias("CN")][string[]]$ProxyServer, [Parameter(Position=1)]
[Alias("U")] [string]$url
)
$proxy = new-object System.Net.WebProxy($ProxyServer)
$WebClient = new-object System.Net.WebClient
$WebClient.proxy = $proxy
#Write-Host ""
Write-Host -NoNewLine "Testing proxy server: " $ProxyServer -ForegroundColor Yellow
Write-Host -NoNewline " [*] URL test -" $url -ForeGroundColor White
Try {
$content = $WebClient.DownloadString($url)
Write-Host -NoNewLine " [+] Opened $url successfully" -ForegroundColor Green "- Amount of chars found on website" $content.Length
} catch {
Write-Host -NoNewLine " [-] Unable to access $url" -ForegroundColor Red
}
Write-Host " [*]"
}
DoWork
Running it should give you a nice, quick overview of a test.















