Скачать несколько больших файлов асинхронно с Powershell - PullRequest
0 голосов
/ 15 марта 2019

У меня есть четыре больших установочных носителя ОС, которые мне нужно скачать. Это займет много времени, если я подожду окончания каждой загрузки, прежде чем перейти к следующей. Перед загрузкой я хочу проверить, присутствует ли медиа-файл.

Решение, вероятно, представляет собой комбинацию хеш-таблицы, test-path и invoke-webrequest, но я просто не могу ее взломать.

Так что в псевдо-что-то вроде:

Check if file1 exists
if true then download and check file2
if false check file 2
check if file 2 exists...

Итак, проверьте, существуют ли файлы, а если нет, начните скачивать все недостающие.

Я не очень опытен с PS, поэтому вся помощь очень ценится, большое спасибо! Изучение ответа было забавным, но я чувствую, что здесь не хватает ключевого слова ...

1 Ответ

0 голосов
/ 15 марта 2019

Существует довольно простой способ асинхронной загрузки с использованием класса WebClient, хотя он, вероятно, недоступен в более старой версии PS. Смотрите пример ниже

$files = @(
 @{url = "https://github.com/Microsoft/TypeScript/archive/master.zip"; path = "C:\temp\TS.master.zip"}
 @{url = "https://github.com/Microsoft/calculator/archive/master.zip"; path = "C:\temp\calc.master.zip"}
 @{url="https://github.com/Microsoft/vscode/archive/master.zip"; path = "C:\temp\Vscode.master.zip"}
)

$workers = foreach ($f in $files) { 

$wc = New-Object System.Net.WebClient

Write-Output $wc.DownloadFileTaskAsync($f.url, $f.path)

}

# wait until all files are downloaded
# $workers.Result

# or just check the status and then do something else
$workers | select IsCompleted, Status
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...