2013-05-31 40 views
7

Ben powershell için linux benim bash komut dosyası aktarmak ama neden başarısız anlayamıyorum denemek istiyorum kurabiye wget yapabilmeyi.PowerShell

Linux komut:

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

Powershell kodu:

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

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

ama bu kod yalnızca çerezler olmadan indirme sayfasına. Ve PHPSESSID'i siteye nasıl gönderebileceğimi bulamıyorum.

bunu nasıl bana açıklayınız. Tamam

+0

Pencereler için bir seçenek var mı? http://superuser.com/questions/25538/what-is-the-windows-equivalent-of-wget – PeskyGnat

cevap

11

iki seçeneğiniz var bu yüzden. Windows üzerinde wget

  1. çalıştırın. için webclient nesne üzerinde
  2. özellikleri ayarlama wget bayrakları tarafından belirlenen işlevsellik çoğaltmak.

İlk kolay, sadece Windows version of wget indirin. İşte

İkincisi için kodudur.

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

Tanım değeri çiftlerini almak için cookies.txt dosyanıza bakın.

wget'un -x işlevselliğini nasıl kopyalayacağından emin değilim. Yukarıdakileri deneyin ve indirdikten sonra dosya ile ne yaptığını görün.

Not - Bunu test edemem ...

+0

Çok ilginç. Wget'i çerezlerle kullandığımda, web sayfası indirildi. Ama eğer powershell'i çerezlerle kullanırsam, sonucum yok. Belki POST verilerini siteye göndermem gerekiyordur? – user2441498

+1

@ user2441498 Wget sunucusuna ne gönderdiği yakalama izlemek için keman kullanın. Not - vget'i bir proxy kullanacak şekilde zorlamak zorunda kalabilirsiniz. –

+0

Güzel örnek! Ancak, PowerShellCore kullanıcıları için (windows nano server), System.Net.WebClient ad alanı ne yazık ki görünmüyor. –