婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > PowerShell小技巧之實現文件下載(類wget)

PowerShell小技巧之實現文件下載(類wget)

熱門標簽:雷霆電話機器人電話 使用電話機器人電銷是否違法 真人和電話機器人對話 信陽話務外呼系統怎么收費 什么渠道可以找外呼系統客戶 金融電銷公司怎么辦理外呼系統 電話智能外呼系統誠信合作 湖州電銷防封卡 安徽400電話辦理

對Linux熟悉的讀者可能會對Linux通過wget下載文件有印象,這個工具功能很強大,在.NET環境下提到下載文件大多數人熟悉的是通過System.Net.WebClient進行下載,這個程序集能實現下載的功能,但是有缺陷,如果碰上類似于…/scripts/?dl=417這類的下載鏈接將無法正確識別文件名,下載的文件通常會被命名為dl=417這樣古怪的名字,其實對應的文件名是在訪問這個鏈接返回結果的HTTP頭中包含的。事實上微軟也提供了避免這些缺陷的程序集System.Net.HttpWebRequest 和 HttpWebResponse,本文將會使用這兩個程序集來實現PowerShell版wget的功能。

代碼不怎么復雜,基本上就是創建HttpWebRequest對象,設定UserAgent和CookieContainer以免在遇到設置防盜鏈的服務器出現無法下載的情況。然后通過HttpWebRequest對象的GetResponse()方法從http頭中獲取目標文件的大小以及文件名,以便能在下載到文件時提示當前下載進度,在下載完文件后,列出當前目錄下對應的文件。代碼不復雜,有任何疑問的讀者可以留言給我,進行交流,下面上代碼:

復制代碼 代碼如下:

 =====文件名:Get-WebFile.ps1=====
function Get-WebFile {
# Author:fuhj(powershell#live.cn ,http://fuhaijun.com)
   Downloads a file or page from the web
.Example
  Get-WebFile http://mirrors.cnnic.cn/apache/couchdb/binary/win/1.4.0/setup-couchdb-1.4.0_R16B01.exe
  Downloads the latest version of this file to the current directory
#>

[CmdletBinding(DefaultParameterSetName="NoCredentials")]
   param(
      #  The URL of the file/page to download
      [Parameter(Mandatory=$true,Position=0)]
      [System.Uri][Alias("Url")]$Uri # = (Read-Host "The URL to download")
   ,
      #  A Path to save the downloaded content.
      [string]$FileName
   ,
      #  Leave the file unblocked instead of blocked
      [Switch]$Unblocked
   ,
      #  Rather than saving the downloaded content to a file, output it. 
      #  This is for text documents like web pages and rss feeds, and allows you to avoid temporarily caching the text in a file.
      [switch]$Passthru
   ,
      #  Supresses the Write-Progress during download
      [switch]$Quiet
   ,
      #  The name of a variable to store the session (cookies) in
      [String]$SessionVariableName
   ,
      #  Text to include at the front of the UserAgent string
      [string]$UserAgent = "PowerShellWget/$(1.0)"
   )

   Write-Verbose "Downloading #39;$Uri'"
   $EAP,$ErrorActionPreference = $ErrorActionPreference, "Stop"
   $request = [System.Net.HttpWebRequest]::Create($Uri);
   $ErrorActionPreference = $EAP
   $request.UserAgent = $(
         "{0} (PowerShell {1}; .NET CLR {2}; {3}; http://fuhaijun.com)" -f $UserAgent,
         $(if($Host.Version){$Host.Version}else{"1.0"}),
         [Environment]::Version,
         [Environment]::OSVersion.ToString().Replace("Microsoft Windows ", "Win")
      )

   $Cookies = New-Object System.Net.CookieContainer
   if($SessionVariableName) {
      $Cookies = Get-Variable $SessionVariableName -Scope 1
   }
   $request.CookieContainer = $Cookies
   if($SessionVariableName) {
      Set-Variable $SessionVariableName -Scope 1 -Value $Cookies
   }

   try {
      $res = $request.GetResponse();
   } catch [System.Net.WebException] {
      Write-Error $_.Exception -Category ResourceUnavailable
      return
   } catch {
      Write-Error $_.Exception -Category NotImplemented
      return
   }

   if((Test-Path variable:res) -and $res.StatusCode -eq 200) {
      if($fileName -and !(Split-Path $fileName)) {
         $fileName = Join-Path (Convert-Path (Get-Location -PSProvider "FileSystem")) $fileName
      }
      elseif((!$Passthru -and !$fileName) -or ($fileName -and (Test-Path -PathType "Container" $fileName)))
      {
         [string]$fileName = ([regex]'#40;?i)filename=(.*)$').Match( $res.Headers["Content-Disposition"] ).Groups[1].Value
         $fileName = $fileName.trim("#92;/""'")

         $ofs = ""
         $fileName = [Regex]::Replace($fileName, "[$([Regex]::Escape(""$([System.IO.Path]::GetInvalidPathChars())$([IO.Path]::AltDirectorySeparatorChar)$([IO.Path]::DirectorySeparatorChar)""))]", "_")
         $ofs = " "

         if(!$fileName) {
            $fileName = $res.ResponseUri.Segments[-1]
            $fileName = $fileName.trim("\/")
            if(!$fileName) {
               $fileName = Read-Host "Please provide a file name"
            }
            $fileName = $fileName.trim("\/")
            if(!([IO.FileInfo]$fileName).Extension) {
               $fileName = $fileName + "." + $res.ContentType.Split(";")[0].Split("/")[1]
            }
         }
         $fileName = Join-Path (Convert-Path (Get-Location -PSProvider "FileSystem")) $fileName
      }
      if($Passthru) {
         $encoding = [System.Text.Encoding]::GetEncoding( $res.CharacterSet )
         [string]$output = ""
      }

      [int]$goal = $res.ContentLength
      $reader = $res.GetResponseStream()
      if($fileName) {
         try {
            $writer = new-object System.IO.FileStream $fileName, "Create"
         } catch {
            Write-Error $_.Exception -Category WriteError
            return
         }
      }
      [byte[]]$buffer = new-object byte[] 4096
      [int]$total = [int]$count = 0
      do
      {
         $count = $reader.Read($buffer, 0, $buffer.Length);
         if($fileName) {
            $writer.Write($buffer, 0, $count);
         }
         if($Passthru){
            $output += $encoding.GetString($buffer,0,$count)
         } elseif(!$quiet) {
            $total += $count
            if($goal -gt 0) {
               Write-Progress "Downloading $Uri" "Saving $total of $goal" -id 0 -percentComplete (($total/$goal)*100)
            } else {
               Write-Progress "Downloading $Uri" "Saving $total bytes..." -id 0
            }
         }
      } while ($count -gt 0)

      $reader.Close()
      if($fileName) {
         $writer.Flush()
         $writer.Close()
      }
      if($Passthru){
         $output
      }
   }
   if(Test-Path variable:res) { $res.Close(); }
   if($fileName) {
      ls $fileName
   }
}

調用方法,如下:
Get-WebFile http://mirrors.cnnic.cn/apache/couchdb/binary/win/1.4.0/setup-couchdb-1.4.0_R16B01.exe
這里下載couchdb的最新windows安裝包。
執行效果如下圖所示:

能夠看到在下載文件的過程中會顯示當前已下載數和總的文件大小,并且有進度條顯示當前下載的進度,跟wget看起來是有些神似了。下載完畢后會顯示已經下載文件的情況。


您可能感興趣的文章:
  • Powershell小技巧之使用Get-ChildItem得到指定擴展名文件
  • PowerShell中使用Get-Alias命令獲取cmdlet別名例子
  • PowerShell中使用Get-Date獲取日期時間并格式化輸出的例子
  • PowerShell中使用Get-EventLog讀取、篩選系統日志的例子
  • PowerShell中使用Out-String命令把對象轉換成字符串輸出的例子
  • PowerShell中使用Get-ChildItem命令讀取目錄、文件列表使用例子和小技巧
  • PowerShell實現簡單的grep功能

標簽:湛江 山南 德州 六盤水 運城 濟南 岳陽 鶴崗

巨人網絡通訊聲明:本文標題《PowerShell小技巧之實現文件下載(類wget)》,本文關鍵詞  PowerShell,小,技巧,之,實現,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PowerShell小技巧之實現文件下載(類wget)》相關的同類信息!
  • 本頁收集關于PowerShell小技巧之實現文件下載(類wget)的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲色图色小说| 91福利视频在线| 精品国一区二区三区| 成人爱爱电影网址| 久久精品国产网站| 亚洲午夜视频在线观看| 久久久久久麻豆| 在线精品观看国产| 91丨porny丨中文| 国产黄色精品视频| 国产一区二区三区免费| 老司机免费视频一区二区三区| 亚洲欧美日韩在线不卡| 国产精品久久久久久久久免费丝袜| 欧美激情资源网| 91成人免费网站| 成人亚洲一区二区一| 日本一区二区三区国色天香| 日韩欧美一级在线播放| 国产成a人亚洲精品| 国产精品高潮久久久久无| 国产主播一区二区三区| 一个色综合av| 中文字幕一区二区三区av| 国产精品77777| 久久电影网站中文字幕| 日本最新不卡在线| 午夜精品视频在线观看| 一区二区免费视频| 国产精品一区二区久久精品爱涩| 久久免费看少妇高潮| 欧美三级在线视频| 国产成人在线色| 国产乱人伦精品一区二区在线观看| 国产大陆精品国产| 中文字幕欧美日本乱码一线二线| 一本一道久久a久久精品综合蜜臀| 国内精品在线播放| 青青草成人在线观看| 91网站在线播放| 曰韩精品一区二区| 国产精品视频免费看| 亚洲精品乱码久久久久久黑人| 在线国产亚洲欧美| 国产精品一区二区免费不卡 | 国产午夜亚洲精品理论片色戒| 麻豆91在线看| 亚洲乱码日产精品bd| 亚洲美女少妇撒尿| 一区二区三区日韩欧美| 老色鬼精品视频在线观看播放| 亚洲综合在线电影| 免费视频最近日韩| 欧美妇女性影城| 经典三级视频一区| 欧美日韩另类国产亚洲欧美一级| 精品国产麻豆免费人成网站| 国产精品久线在线观看| 亚洲bt欧美bt精品| 国产精品久久久久久亚洲毛片| 午夜精品久久久久久久久| 欧美日韩一区二区在线视频| 国产成人超碰人人澡人人澡| 懂色av中文一区二区三区| 国内精品视频666| 国产日韩欧美精品一区| 午夜不卡在线视频| 亚洲欧美在线高清| 一级日本不卡的影视| 欧美一级电影网站| 精品国产乱码久久久久久免费| 欧美专区在线观看一区| 日韩精品一区二区三区在线播放| 久久综合久久综合亚洲| 国产无人区一区二区三区| 日韩一级精品视频在线观看| 欧美一区二区三区在线| 国产精品视频九色porn| 欧美在线视频日韩| 91成人国产精品| 国产精品美女久久久久久久| 国产精品乱人伦一区二区| 亚洲免费观看在线视频| 天涯成人国产亚洲精品一区av| 久久国产三级精品| 91小视频免费看| 在线免费观看成人短视频| 精品久久久久久无| 中文字幕一区二区三区在线观看| 亚洲电影中文字幕在线观看| 韩国视频一区二区| 精品视频123区在线观看| 精品国精品自拍自在线| 欧美三电影在线| 国内精品在线播放| 欧美性大战久久久久久久蜜臀| 日韩一区和二区| 一区二区三区在线高清| 国内不卡的二区三区中文字幕| 色婷婷av一区二区三区大白胸| 欧美一区二区国产| 亚洲猫色日本管| 国产精品免费网站在线观看| 日韩电影在线看| 91丨porny丨最新| 久久久国产精品午夜一区ai换脸| 亚洲自拍偷拍麻豆| 成人黄色a**站在线观看| 欧美国产综合色视频| 国产a级毛片一区| 91视频一区二区| 成人在线视频一区| 91网站在线观看视频| 欧美一级精品大片| 日韩精品一区第一页| 91在线视频网址| 欧美国产成人在线| 国产乱妇无码大片在线观看| 精品乱码亚洲一区二区不卡| 亚洲成人动漫在线观看| 欧美二区三区的天堂| 亚洲综合偷拍欧美一区色| 色吊一区二区三区| 久久久久久久久蜜桃| 国产成人精品亚洲777人妖| 久久影院视频免费| 一本到高清视频免费精品| 中文字幕中文字幕中文字幕亚洲无线| 99精品国产99久久久久久白柏| 久久在线免费观看| 97精品电影院| 一区二区三区加勒比av| 日韩一区二区三区视频在线| 久久99精品久久久久久动态图 | 久久影视一区二区| 国产精品视频看| 色婷婷激情一区二区三区| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 亚洲人一二三区| 久久久91精品国产一区二区精品 | 国产日韩欧美精品综合| 国产日本一区二区| 久久综合九色综合久久久精品综合 | 亚洲一区在线免费观看| 国产偷v国产偷v亚洲高清| 一区二区免费在线播放| 国产日产欧美一区| 欧美卡1卡2卡| 欧美日韩免费高清一区色橹橹 | 久久精品亚洲一区二区三区浴池| 欧美日韩视频在线一区二区| 午夜成人在线视频| 欧美成人精品3d动漫h| 国产成人午夜精品5599| 亚洲国产精品99久久久久久久久| 懂色一区二区三区免费观看| 一区二区在线观看免费视频播放| 欧美日韩久久不卡| 久草精品在线观看| 中文一区在线播放| 欧美特级限制片免费在线观看| 国产精品理论片| 婷婷中文字幕综合| 亚洲一二三区在线观看| 国产精品77777竹菊影视小说| 天天亚洲美女在线视频| 国模冰冰炮一区二区| 欧美一区二区三区四区五区| 欧美日韩美少妇| 日本一区二区三区在线观看| 亚洲成人免费观看| 一区二区三区丝袜| 99re8在线精品视频免费播放| 亚洲成在人线免费| 欧美国产日产图区| 欧美日韩一区二区三区高清| 亚洲精品视频免费看| 精品国产91久久久久久久妲己| av激情成人网| 国产一区久久久| 亚洲伊人伊色伊影伊综合网| 精品久久五月天| 亚洲1区2区3区视频| 国产精品一级在线| 亚洲三级视频在线观看| 欧美日本视频在线| 成人av动漫网站| 国产在线不卡一卡二卡三卡四卡| 婷婷成人激情在线网| 亚洲午夜精品久久久久久久久| 亚洲一区二区偷拍精品| 国产精品九色蝌蚪自拍| 久久久精品中文字幕麻豆发布| 日韩欧美国产成人一区二区| 欧美日韩激情一区| 欧美日韩一区在线| 国产在线精品免费| 亚洲国产成人va在线观看天堂| 中文字幕在线一区二区三区| 在线观看91精品国产麻豆|