Автоматическое тестирование списка URL через авто-прокси с использованием powershell
Я пытаюсь составить сценарий, чтобы дать его примерно 20 опытным пользователям, попросить их создать список всех URL-адресов, добавленных в закладки, запустить сценарий для нашего текущего прокси-сервера, затем перейти к новому авто-прокси и повторно запустить тест, чтобы убедиться, что все пока работает.
Я хочу, чтобы скрипт прочитал список URL-адресов и попытался подключиться к каждому URL-адресу, чтобы проверить, могу ли я получить доступ к каждому URL-адресу через наш прокси-сервер. Я хочу, чтобы он использовал настроенный прокси-сервер ОС и использовал их существующие кэшированные учетные данные.
Я довольно новичок в скриптах PowerShell и застрял. Я предоставлю свой код, а затем ошибки. Я ценю любую помощь, которую вы можете оказать.
Текущая версия
cd \Proxy_Test;
Get-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings' >> .\$Today.response.txt;
$urls = Get-Content .\whitelist.txt
$Today = (Get-Date -format "MMddyyyyHHmmss")
Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings" >> .\$Today.response.txt;
#echo "Command 1";
$Proxy = new-object System.Net.WebProxy
#echo "Command 2";
$proxyAddr = (get-itemproperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings').AutoConfigURL
#echo "Command 3";
$Proxy.Address = $proxyAddr
#echo "Command 4";
$Proxy.useDefaultCredentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
#echo "Command 5";
$webClient = new-object System.Net.WebClient
#echo "Command 6";
$webClient.Headers.Add(“user-agent”, “PowerShell Script”)
#echo "Command 7";
$webClient.Proxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
foreach($URI in $urls){
try {
echo " ";
echo $URI;
echo $URI >> .\$Today.response.txt;
$HttpWebResponse = $null;
$HttpWebRequest = [System.Net.HttpWebRequest]::Create("$URI");
$HttpWebRequest.Method = "HEAD"
$HttpWebRequest.Timeout = 30000 # = 30 seconds
$HttpWebResponse = $HttpWebRequest.GetResponse();
$NOW = (Get-Date -format "MMddyyyyHHmmss")
if ($HttpWebResponse) {
Write-Host -Object $HttpWebResponse.StatusCode.value__;
Write-Output -Object $HttpWebResponse.StatusCode.value__ >> .\$Today.response.txt;
Write-Host -Object $HttpWebResponse.GetResponseHeader("X-Detailed-Error");
Write-Output -Object $HttpWebResponse.GetResponseHeader("X-Detailed-Error") >> .\$Today.response.txt;
(get-itemproperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings').AutoconfigURL >> .\$Today.response.txt;
echo $NOW >> .\$Today.response.txt;
echo " " >> .\$Today.response.txt;
}
}
catch {
$ErrorMessage = $Error[0].Exception.ErrorRecord.Exception.Message;
$Matched = ($ErrorMessage -match '[0-9]{3}')
if ($Matched) {
Write-Host -Object ('HTTP status code was {0} ({1})' -f $HttpStatusCode, $matches.0);
Write-Output -Object ('HTTP status code was {0} ({1})' -f $HttpStatusCode, $matches.0) >> .\$Today.response.txt;
(get-itemproperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings').AutoconfigURL >> .\$Today.response.txt;
echo $NOW >> .\$Today.response.txt;
echo " " >> .\$Today.response.txt;
}
else {
echo "Error Message: "
Write-Host -Object $ErrorMessage;
Write-Output -Object $ErrorMessage >> .\$Today.response.txt;
(get-itemproperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings').AutoconfigURL >> .\$Today.response.txt;
echo $NOW >> .\$Today.response.txt;
echo " " >> .\$Today.response.txt;
}
}
}
#echo "END Command 1";
echo " ";
#echo "END Command 2";
(get-itemproperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings').AutoconfigURL >> .\$Today.response.txt;
echo $NOW >> .\$Today.response.txt;
echo "EXIT";
Кажется, что проблема заключается в том, что мы используем autoproxy с файлом proxy.pac, и я начинаю думать, что powershell не выходит через прокси. Я проверяю URL, который сообщает об истечении времени ожидания в скрипте, но я получаю ошибку 403 в веб-браузере.
Я также не выяснил, как рассчитать каждый URL, чтобы я мог записать текущую производительность и сравнить с новым сервисом.
Любые другие предложения?
Спасибо! Эрик