Автоматическое тестирование списка 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, чтобы я мог записать текущую производительность и сравнить с новым сервисом.

Любые другие предложения?

Спасибо! Эрик

0 ответов

Другие вопросы по тегам