执行异步BITS传输,然后执行RESTful请求

时间:2012-09-28 18:39:27

标签: powershell asynchronous powershell-v2.0 microsoft-bits

我有一个powershell脚本,我执行上传,然后我必须对我刚刚上传的文件做一个RESTful请求。现在它作为一种非异步方法很好用

Start-BitsTransfer -Source $fullPath -Destination "https://www.example.com/bitsupload/$Guid.$SourceFile" -Credential $Credential -TransferType Upload

$web = New-Object Net.WebClient
$web.DownloadString("https://www.example.com/newbitspost/?filename=$Guid.$SourceFile&filedescription=$Description&Friendlyname=$SourceFile")

但是我想在后台运行它,以便最终用户可以关闭窗口(更重要的是,我的最终目标,注销),它仍然会转移。

我知道我可以将-Asynchronous添加到Start-BitsTransfer但我无法弄清楚如何在传输完成后执行GET请求。


感谢错误的重复问题链接(另一个问题的答案从未真正解决问题,它只是展示了如何在之后手动执行某些内容)我的问题归结为:如何复制{{1}的功能来自deprecated BitsAdmin program

1 个答案:

答案 0 :(得分:2)

答案是:你不能。

至少不在PowerShell v2中使用BITS cmdlet / BitsTransfer模块。您唯一的选择是使用已弃用的功能,或推出与BITS API接口的自定义解决方案。有一个名为SharpBITS.NET的项目可能会有所帮助。

有关您希望完成的更多细节可能有助于其他人提供替代方案。我也很好奇您考虑了哪些替代方案 - 比如你可以在上传文件之前进行RESTful GET吗?或者甚至作为上传的一部分 - 在查询字符串中嵌入参数?我还会考虑在没有用户登录的情况下在后台进行上传意味着什么 - 或者其他用户登录,或者如果他们关闭计算机会发生什么(或以其他方式中断传输)。例如,让登录脚本检查BITS传输作业的状态并在那时采取措施可能更有意义。对于不注销的情况,您还可以隐藏窗口并定期轮询BITS作业以检查是否完成。

我知道这些并不理想 - 甚至可能不值得接受已接受的答案。我希望他们能提供帮助。