2012-09-28 65 views
1

我有一個powershell腳本,我執行上傳,然後我必須對剛剛上傳的文件執行RESTful請求。現在,它作爲一個非異步方法的偉大工程執行異步BITS傳輸,然後執行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") 

但是我想在後臺運行,這使最終用戶可以關閉該窗口(更重要的是,我的最終目標,註銷),它會仍在轉移。

我知道我可以添加-AsynchronousStart-BitsTransfer,但我無法弄清楚如何獲得轉讓完成後執行的GET請求。


由於假陽性重複的問題鏈接(另一個問題的答案從來沒有真正解決它只是說明如何手動執行一些事後的問題)我的問題歸結爲:如何複製的/SetNotifyCmdLine功能從deprecated BitsAdmin program

+0

的可能重複[如何在BITS運行腳本下載完成(http://stackoverflow.com/questions/11585231/how-to-run-script-on-bits-download-completion) – Goyuix

+0

@Goyuix這是不是重複的,在你對另一個問題的回答中,你將展示如何手動***調用'Complete-BitsTransfer',但你從未真正顯示如何在傳輸完成後自動調用附加命令***自動***即使用戶已註銷。與過時的BitsAdmin中的舊'/ SETNOTIFYCMDLINE'選項類似。 –

回答

2

答案是:你不行。

至少在PowerShell v2中不使用BITS cmdlets/BitsTransfer模塊。您唯一的選擇是使用棄用的功能,或者推出與BITS API接口的自定義解決方案。有一個名爲SharpBITS.NET的項目可能會有所幫助。

有關您希望完成的更多細節可能會幫助其他人提供替代方案。我也很好奇你已經考慮了哪些替代方案 - 就像你可以在上傳文件之前做你的RESTful GET?或甚至作爲上傳的一部分,或許在查詢字符串中嵌入參數?我還會考慮在沒有用戶登錄的情況下在後臺執行上傳的意味着什麼 - 或者其他用戶已登錄,或者如果他們關閉計算機(或以其他方式中斷傳輸)會發生什麼情況。例如,讓登錄腳本檢查BITS傳輸作業的狀態並採取措施可能更有意義。對於沒有註銷的情況,您也可以隱藏該窗口並定期輪詢BITS作業以檢查是否完成。

我知道這些並不理想 - 甚至不值得接受已接受的答案。雖然我希望他們幫助。