ZetCode

PowerShell Start-BitsTransfer

最后修改:2025 年 2 月 15 日

本文介绍PowerShell中的Start-BitsTransfer cmdlet。它利用Windows BITS服务进行后台文件传输。BITS代表Background Intelligent Transfer Service(后台智能传输服务)。该服务可优化带宽使用并优雅地处理网络中断。

BITS基础知识

BITS是用于异步文件传输的Windows服务。它会自动适应可用带宽,并在网络中断时暂停。连接恢复后,传输将继续。BITS非常适合大文件传输或不可靠的网络。该服务以低优先级运行,以避免影响其他网络应用程序。

基本文件下载

Start-BitsTransfer最简单的用法是从URL下载文件。指定源URL和目标路径。传输在后台运行。您可以使用Get-BitsTransfer监控进度。该cmdlet返回一个BITS作业对象。

bitstransfer1.ps1
Start-BitsTransfer -Source "https://example.com/largefile.zip" -Destination "C:\Downloads\"

此命令将largefile.zip下载到Downloads文件夹。即使PowerShell会话结束,传输也会继续。您稍后可以使用Get-BitsTransfer检查状态。

带进度显示的下载

要监控传输进度,请使用-DisplayName-Asynchronous参数。这会在BITS传输队列中创建一个可见的作业。您可以在Windows BITS管理控制台中查看进度。-Priority参数用于调整传输优先级。

bitstransfer2.ps1
$job = Start-BitsTransfer -Source "https://example.com/update.exe" `
       -Destination "C:\Updates\" -DisplayName "Critical Update" `
       -Priority High -Asynchronous

此命令以高优先级和描述性名称启动传输。$job变量存储传输对象。使用它来检查状态或修改传输。

使用BITS上传文件

Start-BitsTransfer也支持将文件上传到Web服务器。指定本地文件路径和目标URL。服务器必须支持BITS上传。在需要时可以提供身份验证凭据。上传也具有与下载相同的可靠性功能。

bitstransfer3.ps1
Start-BitsTransfer -Source "C:\Reports\Q1.pdf" `
    -Destination "https://server/reports/upload.php" `
    -Credential (Get-Credential)

此命令将Q1.pdf上传到Web服务器。-Credential参数会提示输入身份验证信息。传输在失败时会自动重试。

多文件传输

您可以在一个BITS作业中传输多个文件。提供源路径和目标路径的数组。这对于相关文件来说非常高效。作业中的所有文件共享相同的传输设置。当所有文件传输完成时,作业即完成。

bitstransfer4.ps1
$sources = @("https://site.com/file1.txt", "https://site.com/file2.txt")
$destinations = @("C:\Data\file1.txt", "C:\Data\file2.txt")
Start-BitsTransfer -Source $sources -Destination $destinations

此命令同时传输两个文件。源和目标数组必须具有匹配的索引。BITS会高效地管理并行传输。

计划传输与重试选项

BITS传输可以安排在特定时间进行。使用-RetryTimeout-RetryInterval来控制重试行为。这对于对时间敏感的传输很有用。传输将在指定的时间范围内尝试完成。

bitstransfer5.ps1
Start-BitsTransfer -Source "https://backup.com/nightly.db" `
    -Destination "C:\Backups\" -RetryTimeout 180 -RetryInterval 30 `
    -ScheduledStartTime "22:00"

此命令安排在晚上10点进行备份传输。如果失败,它将每30分钟重试一次,持续3小时。传输不会影响白天网络性能。

来源

PowerShell 文档

在本文中,我们介绍了PowerShell中的Start-BitsTransfer cmdlet。

作者

我的名字是Jan Bodnar,我是一名充满激情的程序员,拥有丰富的编程经验。我自2007年起撰写编程文章。迄今为止,我已撰写了1400多篇文章和8本电子书。我在教授编程方面拥有超过十年的经验。

列出 所有 PowerShell 教程