Powershell Rest呼吁etag

时间:2016-06-21 12:21:11

标签: .net rest powershell

我试图通过拨打休息来获取文件的etag号码。我需要能够将etag号码存储到文本文件中。由于我需要在PowerShell v2.0上进行此工作,因此不能使用Invoke-WebRequest方法,因为它不受支持。

$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ýßÿÃg@ú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调用。

更新 - 感谢Toni评论我可以下载文件

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

但我如何获得etag?我正在尝试将下载的etag与呼叫etag进行比较。如果有不同,请下载并解压缩。

1 个答案:

答案 0 :(得分:2)

etag存储在HTTP标头中,您使用WebClient.DownloadString方法执行的操作是下载文件并将其存储在$etag变量中。相反,请尝试使用WebResponse对象来访问响应标头:

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