2015-08-16 222 views
0

我有一些代碼連接到遠程服務器。 如果無法連接到服務器,我需要寫入文本文件。我已經使用此代碼這樣做:Powershell WMIObject錯誤處理

try 
    { 
     $w3wpresult = (get-wmiobject Win32_Process -filter "name like 'w3wp%'" -computername $server | select name, @{l= "Private Memory (GB)"; e={$_.privatepagecount/1gb}}) 
     $vmresult = (get-wmiobject Win32_Process -filter "name like 'w3wp%'" -computername $server | select name, @{l= "Virtual Memory (GB)"; e={$_.virtualsize/1gb}}) 
     $vmMemory += $server + " @ " + $time + ": " + (($vmresult|%{"$_"})-join',') + "`r`n" 
     $w3wpMemory += $server + " @ " + $time + ":" + (($w3wpresult|%{"$_"})-join',') + "`r`n" 
    } 
    catch [System.Runtime.InteropServices.COMException] 
    { 
     if($_.Exception.ErrorCode -eq 0x800706BA) 
     { 
      $errorMessage = "Unable to connect to server" 
     } 

     $vmMemory += $server + " @ " + $time + ": " + $errorMessage 
     $w3wpMemory += $server + " @ " + $time + ": " + $errorMessage 
    } 

$errorMessage變量未持有該錯誤消息。

任何幫助,將不勝感激。 謝謝。

回答

0

只包括錯誤動作的偏好與WMI命令,如:

(get-wmiobject Win32_Process -filter "name like 'w3wp%'" -computername $server -ErrorAction Stop 

這應該抓住非終止錯誤。 我還會包含一個通用Catch塊來捕獲任何未特別提及的異常。

Try 
{ 
    #WMI Commands 
} 
catch [System.Runtime.InteropServices.COMException] 
{ 
    #Specific error caught 
} 
Catch 
{ 
    #Generic error caught 
} 

Technet topic on try catch