我有四个大型OS安装介质需要下载。如果我等待每次下载完成然后再进行下一个下载,则将花费很长时间。 在下载之前,我想检查媒体是否已经存在。
该解决方案可能是哈希表,测试路径和invoke-webrequest的组合,但我无法破解。
因此,伪造了以下内容:
Check if file1 exists
if true then download and check file2
if false check file 2
check if file 2 exists...
因此,检查文件是否存在,如果不存在,请开始下载所有丢失的文件。
我对PS的经验不是很丰富,因此非常感谢所有帮助,非常感谢!研究答案很有趣,但我觉得我在这里错过了一个关键字...
答案 0 :(得分:0)
有一种使用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