【Powershell】[Invoke-WebRequest]のInternet Explorer エンジンを使用できないエラーについて

Powershell Powershell

[Invoke-WebRequest]を利用したときにエラーが出てきて、解決に苦戦しましたのでその解決策をまとめてみました。

広告

本記事で取り扱うエラー表示

この記事で扱うのは「Invoke-WebRequest」を利用したときに以下のエラーに遭遇した場合についてです。

Invoke-WebRequest : Internet Explorer エンジンを使用できないか、Internet Explorer の初回起動構成が完了していないため、応答のコンテンツを解析できません。UseBasicParsing パラメーターを指定して再試行してください。

参考までにコマンド実行時のエラー画面も記載しておきます。

PS C:\> $response =Invoke-WebRequest "https://www.yahoo.co.jp/"
Invoke-WebRequest : Internet Explorer エンジンを使用できないか、Internet Explorer の初回起動構成が完了していないため、
応答のコンテンツを解析できません。UseBasicParsing パラメーターを指定して再試行してください。
発生場所 行:1 文字:12
+ $response =Invoke-WebRequest "https://www.yahoo.co.jp/"
+            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotImplemented: (:) [Invoke-WebRequest], NotSupportedException
    + FullyQualifiedErrorId : WebCmdletIEDomNotSupportedException,Microsoft.PowerShell.Commands.InvokeWebRequestComman
   d

PS C:\>

解決策は2つある

解決策は以下の2つがあります。

その中でも、最も簡単な方法としては「-UseBasicParsing」のオプションをつけることで事象は解決します。

以下で原因と2つの解決策の具体的な内容について紹介していきます。

原因は?

[Invoke-WebRequest]は IE を内部で利用するため、エラー内容に記載の通り「IE 11の初回起動構成が完了」していない場合はエラーが発生します。

[-UseBasicParsing]オプションを使うと IE を利用せず、基本的なパースを実行するため、エラーを回避することができます。

➀「-UseBasicParsing」のオプションをつけて解決する

「-UseBasicParsing」のオプションをつけて実行してみます。

PS C:\> $response =Invoke-WebRequest "https://www.yahoo.co.jp/" -UseBasicParsing
PS C:\> $response


StatusCode        : 200
StatusDescription : OK
Content           : <!DOCTYPE html><html lang="ja"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" cont
                    ent="IE=edge,chrome=1"/><title>Yahoo! JAPAN</title><meta name="description" content="あなたの毎日を
                    アップデートする情...
RawContent        : HTTP/1.1 200 OK
  ----<以下省略>----

エラーは表示されずにステータスコードも「200」が返ってきており正常に値を取得できたことがわかります。

➁ IE 11の初回起動構成を完了させて解決する

IE を起動できる状態にあるなら、一度起動してエラー文言の指摘通り「初回起動構成を完了」すればエラーは解消されます。

IE を起動後に以下のポップアップが表示されるので「OK」または「後で確認する」を押下します。

IE起動時に出てくる初回起動構成画面

上記設定後に実行してみると、上記で記載したようなエラー表示は出力されずに正常に動作します。

PS C:\> $response =Invoke-WebRequest "https://www.yahoo.co.jp/"
PS C:\> $response


StatusCode        : 200
StatusDescription : OK
Content           : <!DOCTYPE html><html lang="ja"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" cont
                    ent="IE=edge,chrome=1"/><title>Yahoo! JAPAN</title><meta name="description" content="あなたの毎日を
                    アップデートする情...
RawContent        : HTTP/1.1 200 OK
  ----<以下省略>----

コメント

タイトルとURLをコピーしました