1

現在、私は次のような行を使用しています:(他の人がSOで議論したコードに基づく)

(New-Object System.Net.WebClient).DownloadFile( $servicePath, $responseFile)

そして、いくつかのケースでは、私$servicePathは500を投げています。ブラウザウィンドウにその情報を非常にきれいに表示することはできますが、それをファイルにダウンロードして(以前のイベントのコレクションは良いことですよね?)、他の人が参照できるようにすることを好みます。後でそれに。

問題は、try-catchが500の例外をヒットしていて、IISエラーの「イエローテキスト」をキャプチャする方法がわからないことです。PowerShell 2.0でそれを行うにはどうすればよいですか?WebClientから別のものに切り替えたいと思っていますが、可能であれば新しいライブラリを追加せずに、純粋にPSスペースにとどまりたいと思います。

このようにPowerShellISEで試してみると、次のようになります。

$o = @{};
$err = @{};
try {
  $o = New-Object System.Net.WebClient;
  $o.DownloadFile($servicePath, $responseFile);
} catch { 
  $err = $_;
}

$err.Exception.Message => "The remote server returned an error: (500) Internal Server Error."

イエローテキストをキャプチャするにはどうすればよいですか?明らかに、私のブラウザは、イエローテキストが表示されたときにそれをキャプチャできます。HttpWebResponseなどを使用する必要がありますか?

4

2 に答える 2

4

AAAAHHHHH私は実際にここで問題に対する答えを持っています!!!! 私は昨日これと同じ問題を抱えていました!!! :)私の怒りの十分。$ oは、実際に何かを実行したい場合に、オブジェクトとして取得したメッセージを格納します。最も簡単な方法は、出力をout-stringコマンドレットにパイプして文字列に変換することです。これで、$strerror変数を使用して必要なことをすべて実行できます。さらにサポートが必要な場合はお知らせください。

    $o = @{};
    $err = @{};
    try {
          $o = New-Object System.Net.WebClient;
          $o.DownloadFile($servicePath, $responseFile);
    }catch{ 
           $strerror = ($error[0] | out-string)
           }
于 2013-01-17T22:17:20.790 に答える
1

「Write-Output$strerror | Out-File C:\ test \ htmltest.txt」の下のこの行は、それをtxtファイルに送信します

$o = @{};
$err = @{};
try {
      $o = New-Object System.Net.WebClient;
      $o.DownloadFile($servicePath, $responseFile);
}catch{
       $strerror = ($error[0] | out-string)
       Write-Output $strerror | Out-File C:\test\htmltest.txt      
          }
于 2013-04-05T19:22:44.773 に答える