Powershell | DownloadString | Site externo | Retorna

0

Sou totalmente novato no powershell, então, por favor, seja indulgente;)

Estou tentando escrever um script em que uma máquina verifica um site externo esperando pela palavra: "test" para executar um download. As coisas são assim:

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

Eu estou executando o powershell 2.0. Windows7

O que aconteceu:

  • o download não é executado pela internet
  • não é um problema proveniente de IPs ou caminhos

O que eu fiz em seguida:

  • Escrevo diretamente os diferentes comandos no prompt do powershell:

- > o While ($ True) inicia um loop infinito sem sair dele.

Para fazer o truque eu preciso "dar um duplo clique no retorno do meu teclado", o final do loop e o comando "downloadstring" são finalmente executados.

Ainda lembro que sou mais do que um novato, certo? : (

  • Eu tentei "quebrar" "retorno" ou "sair" bu impossível sair do loop.
  • Eu tentei colocar muitos retorno de carro duplo no meu script também sem qualquer sucesso.

Alguém por favor me indica o caminho para fazer essa coisa simples ...? :)

Muito obrigado.

UPDATE Essas pequenas linhas devem ser utilizadas por diferentes pessoas em diferentes lugares (essa é uma das razões de um site deportado), e eu simplesmente não tenho a possibilidade de atualizar as máquinas remotas para uma nova versão do PowerShell. Se alguém tiver algum guru da PowerShell da Microsoft em seu contato, será apenas uma tremenda ajuda. Obrigado a todos vocês.

    
por tomah grandjean 14.11.2014 / 17:16

1 resposta

0

Ok, aqui está um exemplo simples do que eu acho que você está tentando fazer:

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

Estamos baixando uma página da Web e, se ela contém a frase que procurávamos, estamos fazendo o download da outra página. Espero ter te entendido bem. Se não, por favor, deixe-nos saber exatamente o que você precisa.

    
por 14.11.2014 / 22:34

Tags