2013-05-31 11 views
7

私のbashスクリプトをlinuxからpowershellに転送したいのですが、失敗した理由を理解できません。PowerShellでクッキーを使ってwgetを実行するには

Linuxのコマンド:

wget -q -x --user-agent="blablabla" --keep-session-cookies --load-cookies cook.txt http://site.com/qqq 

PowerShellのコード:

$source = "http://site.com/qqq" 
$destination = "d:\site\qqq" 

$wc = New-Object System.Net.WebClient 
$wc.DownloadFile($source, $destination) 

が、このコードクッキーせずにページをだけをダウンロードしてください。そして、PHPSESSIDをどのようにサイトに送ることができるのかわかりません。

どうか私に説明してください。

+0

Windows用のwgetはオプションですか? http://superuser.com/questions/25538/what-is-the-windows-equivalent-of-wget – PeskyGnat

答えて

11

あなたは2つのオプションがあります。

  1. Windowsでwgetを実行します。
  2. webclientオブジェクトのプロパティーを に設定すると、wgetフラグで設定された機能が再現されます。

最初は簡単ですが、Windows version of wgetをダウンロードしてください。

次は2番目のコードです。

$source = "http://site.com/qqq" 
$destination = "d:\site\qqq" 

$wc = New-Object System.Net.WebClient 
# Single Example 
$wc.Headers.Add([System.Net.HttpRequestHeader]::Cookie, "name=value") 
# Multi Example 
$wc.Headers.Add([System.Net.HttpRequestHeader]::Cookie, "name=value; name2=value2"); 
$wc.DownloadFile($source, $destination) 

名前の値のペアを取得するには、cookies.txtファイルを参照してください。

-xの機能を複製する方法がわかりません。wgetです。上記を試して、ダウンロード後にファイルで何ができるかを見てください。

注 - これはテストできません。

+0

非常に興味深い。クッキーでwgetを使用すると、ウェブページがダウンロードされます。しかし、私がクッキーと一緒にパワーシェルを使用する場合、私は結果を持っていません。たぶん私はサイトにPOSTデータを送信する必要がありますか? – user2441498

+1

@ user2441498 fiddlerを使用して、wgetがサーバーに送信するキャプチャを監視します。注 - wgetにプロキシの使用を強制する必要があるかもしれません。 –

+0

素敵な例!しかし、PowerShellCoreユーザー(Windowsナノサーバー)の場合、System.Net.WebClient名前空間は残念なことにexsistに見えません。 –