元の発行日: 2025 年 12 月 9 日
KB ID: 5074596
要約
Windows PowerShell 5.1 では、Invoke-WebRequest コマンドを使用して特別なパラメーターなしで Web ページをフェッチするときに、セキュリティ確認プロンプトが表示されるようになりました。 このプロンプトは、ページ内のスクリプトが解析中に実行される可能性があることを警告し、スクリプトの実行を回避するために、より安全 な -UseBasicParsing パラメーターを使用することをお勧めします。 ユーザーは、操作の続行または取り消しを選択する必要があります。 この変更は、危険なアクションの前にユーザーの同意を要求することで、悪意のある Web コンテンツから保護するのに役立ちます。
この変更は主に、PowerShell スクリプトが自動化と Web コンテンツの取得に使用されるエンタープライズ環境または IT 管理環境に影響します。 個人または家庭の設定でデバイスを使用するPeopleは、一般に、これらのシナリオは IT 管理デプロイの外部では珍しいため、何も行う必要はありません。
変更された内容
-
以前の動作
-
ダウンロードしたコンテンツからスクリプトを実行できる、インターネット エクスプローラー コンポーネント (HTMLDocument インターフェイス (mshtml)) を使用した完全なドキュメント オブジェクト モデル (DOM) 解析。
-
-
新しい動作
-
セキュリティ確認プロンプト: 2025 年 12 月 9 日以降にリリースされた Windows 更新プログラムをインストールした後、PowerShell 5.1 で Invoke-WebRequest コマンド (curl とも呼ばれます) を実行すると、セキュリティ プロンプトがトリガーされます (特別なパラメーターが使用されていない場合)。 プロンプトが PowerShell コンソールに表示され、 スクリプト実行リスクに関する警告が表示されます。 これは、PowerShell が一時停止して、予防措置なしで、Web ページスクリプトコンテンツが処理されるときにシステムで実行される可能性があることを警告することを意味します。 既定では、 Enter キーを押すか [いいえ] を選択すると、安全のために操作が取り消されます。 PowerShell は、セキュリティ上の問題により取り消されたことを示すメッセージを表示し、安全な処理のために -UseBasicParsing パラメーターを使用してコマンドを再実行することを提案します。 [はい] を選択すると、PowerShell は古いメソッド (完全な HTML 解析) を使用してページの解析を続行します。つまり、コンテンツと埋め込みスクリプトが以前と同じように読み込まれます。 基本的に、[ はい] を選択すると、リスクを受け入れ、以前と同じようにコマンドを実行できるようになりますが、[ いいえ] (既定値) を選択すると、保護するアクションが停止します。
-
対話型とスクリプト化の使用: このプロンプトの導入は、主に対話型の使用に影響します。 対話型セッションでは、警告が表示され、応答する必要があります。 自動スクリプト (スケジュールされたタスクや CI パイプラインなどの非対話型シナリオ) の場合、このプロンプトにより、スクリプトが入力を待機してハングする可能性があります。 これを回避するには、このようなスクリプトを更新して安全なパラメーターを明示的に使用することをお勧めします (以下を参照)。
-
対処方法
Invoke-WebRequest コマンドを使用するほとんどの PowerShell スクリプトとコマンドは、引き続きほとんどまたはまったく変更されません。 たとえば、コンテンツのみをダウンロードしたり、テキストやデータとして応答本文を操作したりするスクリプトは影響を受けず、変更は必要ありません。
この変更の影響を受けるスクリプトがある場合は、次のいずれかの方法を使用します。
Invoke-WebRequest コマンドの一般的な使用方法がコンテンツのフェッチ (ファイルのダウンロードや静的テキストの読み取りなど) であり、高度なサイト操作や HTML DOM 解析に依存しない場合は、アクションは必要ありません。 新しい既定の動作はより安全です。Web コンテンツに埋め込まれたスクリプトは、アクセス許可なしでは実行されません。これは、ほとんどのシナリオで推奨される構成です。
対話形式で使用する場合は、新しいセキュリティ プロンプトに [いいえ] を応答します (または、 Enter キーを 押して既定値を受け入れます)、 -UseBasicParsing パラメーターを使用してコマンドを再実行して、コンテンツを安全に取得します。 これにより、フェッチされたページでスクリプト コードが実行されなくなります。 Web コンテンツを対話形式で頻繁にフェッチする場合は、コマンドで既定で -UseBasicParsing パラメーターを使用してプロンプトを完全にスキップし、最大限の安全性を確保することを検討してください。
自動スクリプトまたはスケジュールされたタスクの場合は、Invoke-WebRequest 呼び出しに -UseBasicParsing パラメーターを含むように更新します。 これにより、安全な動作が事前に選択され、プロンプトが表示されず、中断することなくスクリプトが引き続き実行されます。 これにより、セキュリティの向上を引き続き利用しながら、更新後に自動化がシームレスに実行されるようになります。
信頼されていない Web コンテンツまたはパブリック Web コンテンツを処理し、HTML 構造またはフォームの処理を必要とするスクリプトまたは自動化については、長期的な安全性のために それらをリファクタリング または更新することを検討してください。 PowerShell を使用して、危険な可能性のある Web ページ スクリプトを解析して実行するのではなく、次のことができます。
-
代替解析メソッドまたはライブラリを使用します (たとえば、スクリプトを実行しない正規表現または XML/HTML 解析ライブラリを使用して、Web ページのコンテンツをプレーン テキストまたは XML として扱います)。
-
インターネット エクスプローラーのエンジンに依存せず、スクリプトの実行を回避する新しい PowerShell Core (バージョン 7.x 以降) を使用するか、コンテンツをより安全に処理する特殊な Web スクレイピング ツールを使用して、Web 操作へのアプローチを最新化します。
-
インターネット エクスプローラーは非推奨であるため、インターネット エクスプローラー固有の機能への依存を制限します。 Web コンテンツが安全に処理される環境で機能できるように、これらの機能に依存するスクリプトの一部を書き直す計画を立てます。
-
リファクタリングの目標は、セキュリティ リスクにさらすことなく、必要な機能を実現し、この変更によって導入されたより安全な既定値を受け入れることです。
Invoke-WebRequest コマンドの完全な HTML 解析機能 (フォーム フィールドの操作や構造化データのスクレイピングなど) を使用する必要があり、Web コンテンツのソースを信頼している場合でも、ケースバイケースで従来の解析動作を続行できます。 対話型セッションでは、操作の続行を許可する確認プロンプトで [はい] を選択するだけです。 そのたびに、セキュリティ リスクのリマインダーを受け取ります。 -UseBasicParsing パラメーターを指定せずに続行するには、Web コンテンツを完全に信頼するシナリオ (たとえば、制御下の内部 Web アプリケーションや既知の安全な Web サイト) に制限する必要があります。
重要: この方法は、信頼されていない Web コンテンツまたはパブリック Web コンテンツに対して実行されているスクリプトには推奨されません。これは、この更新プログラムが軽減することを目的としたサイレント スクリプト実行のリスクを再導入するためです。 また、非対話型オートメーションの場合は、プロンプトに自動的に同意する組み込みメカニズムがないため、スクリプトの完全な解析に依存することはお勧めしません (リスクがあることに加えて)。 このオプションは控えめに使用し、一時的なメジャーとしてのみ使用してください。
よく寄せられる質問
ほとんどの場合、ファイルをダウンロードしたり、テキストとして Web コンテンツをフェッチしたりするスクリプトは引き続き機能します。プロンプトを回避するには、-UseBasicParsing パラメーターを追加します。 高度な HTML 解析 (フォームや DOM など) を使用するスクリプトは、構造化オブジェクトの代わりに生データをハングまたは出力する可能性があります。基本的な解析に切り替えたり、コンテンツを異なる方法で処理するようにスクリプトを変更したりする必要があります。
PowerShell スクリプトの Invoke-WebRequest コマンドで -UseBasicParsing パラメーターを常に使用して、安全で非対話型の実行を保証します。
はい。 従来の解析に応じたスクリプトは、オプトインまたはリファクタリングするために更新する必要があります。
標準更新プログラムとホットパッチ更新プログラムの両方に適用される PowerShell の変更により、同じ動作が変更されます。
はい。 PowerShell 7 では、既定でセキュリティで保護された解析が既に使用されています。
サポート プランについては、モジュール所有者に問い合わせてください。 移行中に信頼できるコンテンツにオプトインを一時的に使用します。
この変更を準備して検証するには、次のことをお勧めします。
-
DOM 機能を使用してスクリプトを識別します。
-
新しい既定値を使用して自動化をテストします。
-
従来のオプトインを信頼できるソースに制限します。
-
信頼されていないコンテンツのリファクタリングを計画します。