「Windows 10ミニTips」は各回の作成時点で最新のWindows 10環境を使用しています。

Windows PowerShellはInternet Explorer(以下、IE)エンジンを使用して、Webサーバーへのアクセスを実行している。Windows 10のIE 11はサポートを継続するものの、Microsoft EdgeもエンジンをEdgeHTMLからChromiumへ変更し、IE 11を使う場面は多くない。このような背景から、すでにIE 11をアンインストールしているかたも少なくないだろう。

その状態で困るのが、Windows PowerShellでWebサーバーからコンテンツを取得するコマンドレット「Invoke-WebRequest」を使う場面。IE 11の初回起動構成を終えていない場合はエラーが発生する。

  • IE 11未使用環境でInvoke-WebRequestを実行するとエラーが発生する

メッセージにあるようにIE 11を起動し、初回起動構成を終えればエラーを回避できるが、IE 11アンインストール済みでは対処が難しい。そこでいくつかの解決方法を紹介する。

オプション「-UseBasicParsing」で回避

1つはオプション「-UseBasicParsing」を使う方法だ。本来Invoke-WebRequestはコンテンツ取得と同時にHTMLのパース(構文解析)を実行している。だが、本オプションを使うとIEエンジンを使用せず、基本的なパースを実行するため、先のエラーを回避することが可能だ。

  • 「Invoke-WebRequest -uri "https://news.mynavi.jp" -UseBasicParsing」とオプションを付与すると、コマンドレットが正常に動作する

PowerShell 6.x以降を使う

Windows PowerShellをベースにオープンソース化したPowerShellを使う方法もある。執筆時点でのWindows PowerShellはバージョン5.1だが、今後はバージョンを更新することはない。すでにオープンソース版PowerShellはバージョン6.xをリリースし、現在はバージョン7.xのプレビュー版が開発中だからである。加えてPowerShell 6.x以降は基本的なパースを既定とし、UseBasicParsingは非推奨オプションとなった。

  • PowerShell 7.1プレビューを使用しているが、既定で基本的なパースを実行するため、オプションを付与する必要がない

レジストリで初回起動構成を無効にする

最後はレジストリで初回起動構成を無効にする方法を紹介する。今回はユーザーレベルでエントリーを作成しているが、システム全体に適用する場合は、「HKCU」を「HKLM」に置き換えてほしい。

  • 下の囲みの内容をWindows PowerShellにコピー&ペーストして「Enter」キーを押す。その後コマンドレットを実行すると、エラーが発生しない



reg.exe add "HKCU¥SOFTWARE¥Microsoft¥Internet Explorer¥Main" /v DisableFirstRunCustomize /t REG_DWORD /d 1 /f