Powershell BitsTransfer无法完成

时间:2013-04-01 20:41:55

标签: powershell microsoft-bits

我很遗憾不断询问Powershell,我的脚本foo不是它所需要的。

我正在写一个BitsTransfer .PS1来自动每周下载一个ASCII文件。

似乎永远不会完成并达到“已转移”状态,并且似乎在“转移”状态下停滞不前。我可以在-Destination文件夹中看到一个TMP文件,其中包含我的ASCII数据。

当我手动下载目标文件并将其与TMP文件进行比较时,它们的大小相同,并且看起来具有相同的第一个和最后一个记录。我假设下载完成了。

如果我手动运行Get-BitsTransfer | Complete-BitsTransfer,TMP文件消失但仍然没有-Destination文件。

我的剧本并不复杂......

$date= Get-Date -format yyMMdd
$ntispasswd = ConvertTo-SecureString "*******" -AsPlainText -Force
$ntiscreds = New-Object System.Management.Automation.PSCredential ("*******", $ntispasswd)
$jobdescriptor = "DMFWA" + $date
$dmfpath = "C:\DMF"

# -Source https://dmf.ntis.gov/dmldata/weekly/WA$date `

Import-Module BitsTransfer

Start-BitsTransfer `
    -DisplayName $jobdescriptor `
    -Priority High `
    -ProxyUsage Override `
    -ProxyList mckwebfilt1:3128 `
    -RetryInterval 60 `
    -TransferType Download `
    -Source https://dmf.ntis.gov/dmldata/weekly/WA130322 `
    -Destination $dmfpath\TestWA$date.txt `
    -Authentication Basic `
    -Credential $ntiscreds `
    -Asynchronous

$job = Get-BitsTransfer $displayname

While($Job.Jobstate -ne 'Transferred'){
    $job
    Start-Sleep -s 1
}

Complete-BitsTransfer $job

有人能帮我理解我做错了吗?

4 个答案:

答案 0 :(得分:1)

我在BitsAdmin上花了太多时间尝试传输一个永远不会完成的文件因为没有从服务器提供文件长度。

Start-BitsTransfer : Die Dateigröße wurde vom Server nicht zurückgegeben. 
Möglicherweise enthält die URL dynamischen Inhalt. Der
Inhaltslängenheader ist in der Server-HTTP-Antwort nicht verfügbar.
In Zeile:1 Zeichen:1
+ Start-BitsTransfer http://***/file c:\users\***\file.txt
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidOperation: (:) [Start-BitsTransfer],Exception
+ FullyQualifiedErrorId :
StartBitsTransferCOMException,Microsoft.BackgroundIntelligentTransfer.
  Management.NewBitsTransferCommand

在使用Start-BitsTransfer从powershell尝试相同的操作后,它也是一样的行为。

这个解决方案非常棒,也解决了我的问题!谢谢!

$request = New-Object System.Net.Webclient
$passwd = ConvertTo-SecureString "**" -AsPlainText -Force
$request.Credentials = New-Object System.Management.Automation.PSCredential ("**", $passwd)
$request.Downloadstring("https://my full target url") 

答案 1 :(得分:0)

查看此web page about using Start-BitsTransfer上的最后一个示例,看看是否有帮助。

答案 2 :(得分:0)

原来是“皇家PITA”。

谢谢Keith的提示。

我无法让BitsTransfer正常工作并使用类似的东西..

$request = New-Object System.Net.Webclient
$passwd = ConvertTo-SecureString "**" -AsPlainText -Force
$request.Credentials = New-Object System.Management.Automation.PSCredential ("**", $passwd)
$request.Downloadstring("https://my full target url") 

答案 3 :(得分:0)

你是以正确的方式做到的:

Import-Module BitsTransfer

Start-BitsTransfer -Source $url -Destination $output -Asynchronous    
Get-BitsTransfer | Complete-BitsTransfer

可能的失败

  1. 目的地参数错误$dmfpath\TestWA$date.txt
  2. 正在运行超过60个BitTransfers,以Get-BitsTransfer | Remove-BitsTransfer
  3. 结束