2014-01-08 48 views
1

PowerShell和Windows系統有傳輸文件名爲BITS一個很好的框架。這可以同步使用:Complete-BitsTransfer cmdlet的用途是什麼?

Start-BitsTransfer -Source \\remote_file_location -Destination . 

有一個同步標誌運行在後臺下載:

Start-BitsTransfer -Asynchronous -Source \\remote_file_location -Destination . 

如果只是運行作業異步,一段時間後,它會顯示爲轉移:

JobId      DisplayName    TransferType    JobState        
-----      -----------    ------------    --------     
cd070594-6103-44eb-b6c... BITS Transfer   Download     Transferred 

但是,您的文件將無法在目的地顯示,直到您運行的Complete-BitsTransfer cmdlet的:

Get-BitsTransfer | Complete-BitsTransfer 

在那之前,你的文件顯然是在地獄,什麼地方您的計算機上(或在內存中?)。這樣做的目的是什麼?爲什麼Windows不直接將文件放到目的地?

+0

應該是在一個TMP文件,直到你完成轉移。 –

+1

@關節拖拉機:那有什麼意義?如果它在一個小驅動器上,那麼將不會有填滿你的tmp文件夾的風險嗎? –

回答

2

在事件驅動的自動化流程是要儘快文件寫入做一些事情的情況下,它可以讓你通過傳送文件到臨時位置控制這一過程的時間,並且整個過程會寫到它的最終目的地。

例如如果你傳輸文件到多個系統更新一個客戶端軟件,並需要確保他們都更新在同一時間,以及對它們進行更新,或者都不做。

+0

不夠公平,儘管我認爲它應該是可選的並且至少有文件記錄。 –

+0

你知道最終的副本之前存儲文件的位置嗎? –

+0

@static_rtti從我看到他們被放在目標文件夾;但只是.tmp文件(例如'BITE665.tmp')。完成時,這些文件被重命名爲指定的文件名和擴展名。 – JohnLBevan