「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を起動し、初回起動構成を終えればエラーを回避できるが、IE 11アンインストール済みでは対処が難しい。そこでいくつかの解決方法を紹介する。
オプション「-UseBasicParsing」で回避
1つはオプション「-UseBasicParsing」を使う方法だ。本来Invoke-WebRequestはコンテンツ取得と同時にHTMLのパース(構文解析)を実行している。だが、本オプションを使うとIEエンジンを使用せず、基本的なパースを実行するため、先のエラーを回避することが可能だ。
PowerShell 6.x以降を使う
Windows PowerShellをベースにオープンソース化したPowerShellを使う方法もある。執筆時点でのWindows PowerShellはバージョン5.1だが、今後はバージョンを更新することはない。すでにオープンソース版PowerShellはバージョン6.xをリリースし、現在はバージョン7.xのプレビュー版が開発中だからである。加えてPowerShell 6.x以降は基本的なパースを既定とし、UseBasicParsingは非推奨オプションとなった。
レジストリで初回起動構成を無効にする
最後はレジストリで初回起動構成を無効にする方法を紹介する。今回はユーザーレベルでエントリーを作成しているが、システム全体に適用する場合は、「HKCU」を「HKLM」に置き換えてほしい。
reg.exe add "HKCU¥SOFTWARE¥Microsoft¥Internet Explorer¥Main" /v DisableFirstRunCustomize /t REG_DWORD /d 1 /f