[解決済み] 4xx/5xxで例外をスローしないPowershellウェブリクエスト
2023-03-16 22:14:14
質問
私は、Webリクエストを作成し、応答のステータスコードを検査する必要があるpowershellスクリプトを書いています。
私はこれを書いてみました。
$client = new-object system.net.webclient
$response = $client.DownloadData($url)
もこれと同じように
$response = Invoke-WebRequest $url
が、Web ページが成功ではないステータスコードを持つときはいつでも、PowerShell は先に進み、実際のレスポンスオブジェクトを与える代わりに例外をスローします。
ページの読み込みに失敗した場合でも、ステータスコードを取得するにはどうしたらよいでしょうか。
どのように解決するのですか?
これを試してみてください。
try { $response = Invoke-WebRequest http://localhost/foo } catch {
$_.Exception.Response.StatusCode.Value__}
これが例外を投げるのはちょっと残念ですが、そういうものなのです。
コメントごとの更新
このようなエラーが発生しても有効なレスポンスを返すようにするために、例外を捕捉するタイプは
WebException
を取得し、関連する
Response
.
例外のレスポンスは
System.Net.HttpWebResponse
であるのに対し、成功した
Invoke-WebRequest
の呼び出しは
Microsoft.PowerShell.Commands.HtmlWebResponseObject
であるため、両方のシナリオで互換性のある型を返すには、成功したレスポンスの
BaseResponse
で、これも型は
System.Net.HttpWebResponse
.
この新しいレスポンスタイプのステータスコードは、型が
[system.net.httpstatuscode]
の型であり、単純な整数ではないため、明示的に int に変換するか、あるいは
Value__
プロパティにアクセスして、数値コードを取得する必要があります。
#ensure we get a response even if an error's returned
$response = try {
(Invoke-WebRequest -Uri 'localhost/foo' -ErrorAction Stop).BaseResponse
} catch [System.Net.WebException] {
Write-Verbose "An exception was caught: $($_.Exception.Message)"
$_.Exception.Response
}
#then convert the status code enum to int by doing this
$statusCodeInt = [int]$response.BaseResponse.StatusCode
#or this
$statusCodeInt = $response.BaseResponse.StatusCode.Value__
関連
-
[解決済み】powershellにターミネーターがない。"
-
[解決済み] Connect-VIServer は、渡された資格情報では動作しないが、統合された認証では動作する。
-
[解決済み] OutVariableを使用してArrayListを作成する
-
[解決済み] Powershell - 空のパイプ要素は許可されません。
-
[解決済み] PowerShellと-contains演算子
-
[解決済み] Powershellでパラメータを切り替える
-
[解決済み] PowerShellで使用できるすべての色のリスト?
-
[解決済み] PowerShellでコンソールに書き込むには?
-
[解決済み] PowerShellでディレクトリを変更する
-
[解決済み] Powershell Get-ChildItem -Filter は、同じ値でWhere句とは異なる動作をします。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Powershell: 引数 "xxx" を受け入れる位置パラメーターが見つからない。
-
[解決済み] powershellでパラメータ'Path'がNULLのため引数を結合できないエラーの取得
-
[解決済み] スクリプト内の特定の場所にジャンプする
-
[解決済み] AzureのAdd-AzureDiskが動作しない
-
[解決済み] Get-ADUserとフィルタを含むForEach-Objectループ
-
[解決済み] PowerShellの文字列補間構文
-
[解決済み] PowerShellでLDAPクエリ
-
[解決済み] Join-Pathを使って、2つ以上の文字列をファイルパスに結合するにはどうすればよいですか?
-
[解決済み] PowerShellスクリプトから終了コードを返す
-
[解決済み] PowerShellで変数とその型がBooleanであることを宣言する方法は?[重複している]をクリックします。