2010-08-06 21 views
1

我正在使用以下代碼使用PowerShell 1.0上載文件。如何判斷上傳是否成功完成或出現錯誤?如果上傳成功,我需要刪除該文件。Powershell 1.0中的異常處理

我試過的東西:
1.陷阱子句。似乎不能讓這個工作。
2.檢查$ webclient.UploadFile的返回值 - 這似乎永遠是一個空字符串,成功與否

$File = "D:\Dev\somefilename.zip" 
$ftp = " ftp://username:[email protected]/pub/incoming/somefilename.zip "

"ftp url: $ftp"

$webclient = New-Object System.Net.WebClient $uri = New-Object System.Uri($ftp)

"Uploading $File..."

$webclient.UploadFile($uri, $File)

回答

0

UploadFile方法是同步的。如果它沒有拋出異常就完成了,那麼你已經取得了成功。如果失敗,你應該得到一個可捕獲的WebException。

http://msdn.microsoft.com/en-us/library/36s52zhs.aspx

我就離開了錯誤有關的細節捕捉,因爲它似乎你熟悉它了。

+0

任何錯誤捕獲的例子會很有幫助。我嘗試過陷阱[Exception] {$ failed =「true」},但不斷收到錯誤信息,Powershell不會將陷阱識別爲cmd-let – 2010-08-06 00:53:47

+0

下面是一個包含一些好例子的頁面。請注意,他們在包含(赦免雙關語)異常代碼的函數中進行陷印,並首先放置陷印邏輯。我希望這有幫助。 http://huddledmasses.org/trap-exception-in-powershell/ – kbrimington 2010-08-06 00:59:22

3

掉落陷阱下來到一個新的範圍,使您可以通過上傳拋出的異常的陷阱例如:

$succeeded = $true; 
& { 
    trap { $script:succeeded = $false; continue } 
    $webclient.UploadFile($uri, $File) 
} 
if ($succeeded) { 'Yay!' } else { 'Doh!' } 

您也可以嘗試捕捉特定的異常,像這樣:

trap [System.Net.WebException] { ... }