簡體   English   中英

Powershell 等到文件下載后繼續腳本

[英]Powershell wait until after file download to continue script

$x = Invoke-RestMethod -Method "Get" -uri $url -Headers $get_headers 
**Start-Process "chrome.exe" $x.url**
Start-Sleep -s 10

你好,

我正在使用上面的內容通過 chrome 下載文件。 是否可以等到文件下載完成后繼續執行腳本,而不是休眠或實現增量重試 function。

謝謝

那么讓我們談談我所看到的以及如何讓它變得更好

$x = Invoke-RestMethod -Method "Get" -uri $url -Headers $get_headers 
Start-Process "chrome.exe" $x.url
Start-Sleep -s 10

那么你可以使用Invoke-RestMethod保存

這是一個例子

Invoke-RestMethod "http://www.peoplelikeus.org/piccies/codpaste/codpaste-teachingpack.pdf" -OutFile "C:\codpaste-teachingpack.pdf"

在您的情況下,這可能有效。

$x = Invoke-RestMethod $url -Headers $get_headers 
Invoke-RestMethod $x.url -OutFile "C:\SomeTypeOfFile.Txt"

Invoke-RestMethod將等到它完成后才能在代碼中繼續。

僅供參考(把它放在這里是因為它對於普通評論來說太長了),還有其他 3 種方法,你可以這樣做:

$url = "http://mirror.internode.on.net/pub/test/10meg.test"
$output = "$PSScriptRoot\10meg.test"
$start_time = Get-Date


# 1. Invoke-WebRequest

Invoke-WebRequest -Uri $url -OutFile $output
"Time taken: $((Get-Date).Subtract($start_time).Seconds) second(s)"

# 2. System.Net.WebClient

(New-Object System.Net.WebClient).DownloadFile($url, $output)
"Time taken: $((Get-Date).Subtract($start_time).Seconds) second(s)"

# 3. Start-BitsTransfer

Start-BitsTransfer -Source $url -Destination $output -Asynchronous
"Time taken: $((Get-Date).Subtract($start_time).Seconds) second(s)"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM