1

我有一个 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 请求。


由于误报 Duplicate question 链接(另一个问题的答案从未真正解决问题,它只是展示了如何在之后手动执行某些事情)我的问题归结为:如何/SetNotifyCmdLine已弃用的 BitsAdmin 程序中复制功能。

4

1 回答 1

2

答案是:你不能。

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

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

我知道这些并不理想——甚至可能不值得接受接受的答案。我确实希望他们有所帮助。

于 2012-10-01T16:58:08.417 回答