2016-06-21 65 views
0

我想通過休息電話來獲取文件的etag號碼。我需要能夠將etag編號存儲到文本文件中。由於我需要在PowerShell v2.0上進行此項工作,因此我不能使用Invoke-WebRequest方法,因爲它不受支持。Powershell休息電話etag

$response = Invoke-WebRequest -Uri $uri 
$response | select @{n='ETag';e={ $_.Headers.ETag }} 

我想用點網方法 -

$response = New-Object System.Net.WebClient 
$etag = $response.DownloadString($URI) 

但是我得到的垃圾輸出。我運行時的輸出示例$etag -

PK ÁMÕHÖnÖ™ª ? SelfDiscovery.ps1í]{sǑ￯ê¾ÃfÉD€+ñCË¡)*VE¹ 
Ú¼*ÓÅPBø)ó~õ»ôc3³;»X€ A-§P ÅÅlwO?~Ý=3ýßÿÃ[email protected]úp 
Ç°çøÂ%þìâ5ú¤#ÀŒá?á?øMwìÁ{¼šâ¿RgDð_§øJà:H…®_âßü」èñ>úý;~N£ˆ[¯¥þ•àH¢) 
òtrò•3¤©[xíU†³ð Z]¼—FwP¾CŸZ9ºH{ÄŸž3âØÃßtE¸ßJCÒöñÕã7qv5ò¯’D#ä8à‘–ËÖÐÿ{ 
È’é'ßãß)s㿈ï¥÷¹¯]C|÷'s½d]Ùñ$±Ðë9<í¼ÏXo]¶Þ9¼3¥;š¬'EÞòU²œ¯Û##I2b=¨ÝÖXWøi 
ÌΘôSôYßà»ÛðÒÈ°›8CÒâä÷O¼ÒHqOás8DY†(=Ñëà¿{ì‹'8¦ /YV±Ñ¶ÜöàçØGžOñ「-ØÅÏ 
O²Wø×ðóu–hïNà_,×>ë—fÜÌHõ(T‡?ç5ØÀ÷!ê3Ëcÿ¾Rü×.Ïù©Y¿»Hï€yßLø¿4úî°íò2Ð 
˜Ä¼Êµ–ˆî¿ñüù5ò:á»H»#ÃkÈÔ$^5V¬7$²ñü3Gß ¡]èNñˆ-ô®1ÇçqBhÐ<O9ÂFï(š«Ã0µ†áEöq 
Qãx¡\rô•ïwl¯¼ëbá<]ÚʯÇÿ­ùCNÊEH‘¥yPˆÝ-ƒùÕd•(žMÆpU•G§HGø:幟!Å'ð|_àÕ6^=Æ 

有沒有人見過這個?我不知道我做錯了什麼,我之前使用過這個方法來進行API調用。

更新 - 感謝託尼評論,我可以得到該文件下載

$response = New-Object System.Net.WebClient 
$etag = $response.DownloadFile($URI,$file) 

但是我怎麼弄的eTag?我正試圖將下載的etag與call etag進行比較。如果有不同,請下載並解壓縮。

+1

「PK」開頭提示壓縮(zip)輸出。你需要解壓縮它。這不可能從一個字符串,所以使用'DownloadData'或'DownloadFile'來代替。這裏是一個有用的「魔法標記」列表:https://en.wikipedia.org/wiki/List_of_file_signatures – TToni

+0

@Toni謝謝,我需要能夠下載該文件,以幫助通過一點幫助解決問題從 - [Technet](https://social.technet.microsoft.com/Forums/scriptcenter/en-US/00bd2230-ec02-4a91-940c-3ad252220a08/using-powershell-to-download-multiple-video-from- a-website?forum = winserverpowershell) –

回答

2

etag存儲在HTTP頭文件中,您使用WebClient.DownloadString方法所做的工作是下載文件並將其存儲在$etag變量中。相反,請嘗試使用WebResponse對象訪問響應標頭:

$request = [System.Net.HttpWebRequest]::Create($Uri) 
$response = $request.GetResponse() 
$etag = $response.Headers["ETag"] 
+0

謝謝你的幫助。這是完美的。 Powershell 2.0使其更難研究。 –