2010-02-02 7 views
125

Dies ist die try catch in Powershell 2,0Powershell 2.0 Versuch fangen, wie die Ausnahme für den Zugriff auf

$urls = "http://www.google.com", "http://none.greenjump.nl", "http://www.nu.nl" 
$wc = New-Object System.Net.WebClient 

foreach($url in $urls) 
{ 
    try 
    { 
     $url 
     $result=$wc.DownloadString($url) 
    } 
    catch [System.Net.WebException] 
    { 
     [void]$fails.Add("url webfailed $url") 
    } 
} 

aber was ich will ist, etwas zu tun wie in C#

catch(WebException ex) 
{ 
    Log(ex.ToString()); 
} 

Ist das möglich?

Antwort

178

versuchen, etwas wie folgt aus:

try { 
    $w = New-Object net.WebClient 
    $d = $w.downloadString('http://foo') 
} 
catch [Net.WebException] { 
    Write-Host $_.Exception.ToString() 
} 

Die Ausnahme ist in der $_ Variable. Sie könnten $_ wie folgt erkunden:

try { 
    $w = New-Object net.WebClient 
    $d = $w.downloadString('http://foo') 
} 
catch [Net.WebException] { 
    $_ | fl * -Force 
} 

Ich denke, es wird Ihnen alle Informationen, die Sie benötigen.

Meine Regel: Wenn einige Daten nicht angezeigt werden, versuchen Sie -force zu verwenden.