@IgorPlays

Как сделать цикл с запросом в PowerShell?

У меня есть скрипт который должен заходить на страници и брать информацию.
Но когда делаю это через цикл , powershell ругается. Я в файл вписываю номера страниц, а далее всё цикл делает . Но что-то идёт не так...

Вот код:
for ($i=0; $i -le $file.Count; $i++){

        $url = "https://site.com/page/"+$file[$i];

        if($file[$i]){
              Start-Sleep -Seconds 2
              $get_awb = New-Object Microsoft.PowerShell.Commands.WebRequestSession
              $get_awb.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.124 Safari/537.36 Edg/104.0.1293.91"
              $get_awb.Cookies.Add((New-Object System.Net.Cookie("JSESSIONID", $session_auth, "/", "sherloc.dhl.com")))
              $get_awb.Cookies.Add((New-Object System.Net.Cookie("CSRF-TOKEN", $token_auth, "/", "sherloc.dhl.com")))
              $get_awb.Cookies.Add((New-Object System.Net.Cookie("remember-me", $remember_auth, "/", "sherloc.dhl.com")))
              $curl_awb = Invoke-WebRequest -Uri $url`
                -WebSession $get_awb `
                -Headers @{
                "Accept"="application/json, text/plain, */*"
                  "Accept-Encoding"="gzip, deflate, br"
                  "Accept-Language"="en-US,en;q=0.9"
                  "DNT"="1"
           
                  "Sec-Fetch-Dest"="empty"
                  "Sec-Fetch-Mode"="cors"
                  "Sec-Fetch-Site"="same-origin"
                  "sec-ch-ua"="`"Chromium`";v=`"104`", `" Not A;Brand`";v=`"99`", `"Microsoft Edge`";v=`"104`""
                  "sec-ch-ua-mobile"="?0"
                  "sec-ch-ua-platform"="`"Windows`""
                }

                 $json_data = ConvertFrom-Json $curl_awb.Content

                 $phone = $json_data.shps.receiver.telephoneNumber

                 $id = $json_data.queryString
                 $phone
        }

       }

запускаю, а потом он ругается, когда ставлю просто через "page/2" и в цикле, он его обрабатывает
  • Вопрос задан
  • 149 просмотров
Решения вопроса 1
From_Kharkiv
@From_Kharkiv
Вероятно Вы выходите за границу массива на последнем элементе(номерация массива идет с ноля, значит последний элемент будет иметь номер $file.Count-1).
Попробуйте использовать
for ($i=0; $i -lt $file.Count; $i++)
вместо
for ($i=0; $i -le $file.Count; $i++)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы