Powershell дождаться окончания загрузки файла, чтобы продолжить скрипт - PullRequest
0 голосов
/ 24 февраля 2020
$x = Invoke-RestMethod -Method "Get" -uri $url -Headers $get_headers 
**Start-Process "chrome.exe" $x.url**
Start-Sleep -s 10

Здравствуйте,

Я использую вышеупомянутое, чтобы загрузить файл через chrome. Можно ли дождаться завершения загрузки файла, чтобы продолжить выполнение сценария вместо перехода в спящий режим или реализации функции добавочной повторной попытки.

Спасибо

Ответы [ 2 ]

0 голосов
/ 25 февраля 2020

К вашему сведению (поместите это здесь, поскольку это слишком долго для обычного комментария), вот 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)"
0 голосов
/ 24 февраля 2020

Итак, давайте поговорим о том, что я вижу, и о способах сделать его лучше

$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 будет ожидать завершения своего действия в коде.

...