Contents

非推奨になった Windows で VBScript を有効または無効にする方法

Contents

<本文>![]

2024 年に、Microsoft は、以前は人気のあった Windows スクリプト言語である VBScript のサポートを段階的に廃止する計画を発表しました。 VBScript スクリプトは、シンプルで使いやすく、Visual Basic に基づいた透過的なコード構造を備えているため、自動化およびシステム管理で依然として人気があります。その他の利点としては、Windows Script Host の組み込み Windows ランタイムとインタープリター、Microsoft サポートやサードパーティの貢献者が提供する既製のスクリプトの広範なライブラリへのアクセスが挙げられます。

ただし、レガシー アーキテクチャ、多数の脆弱性、悪意のある使用の可能性があるため、Microsoft は VBScript の使用を推奨していません。のリリースに伴い、

Windows 11 24H2

そして

Windowsサーバー2025

, VBScript は非推奨となり、オプションのシステム機能 (Feature on Demand、FoD) になりました。 Windows 11 25H2 では現在、デフォルトで VBScript が有効になっています。ただし、MSFT ロードマップによると、2027 年の将来の Windows リリースでは VBScript がデフォルトで無効になる予定です。その後、この機能は Windows イメージから完全に削除されます。

![]

Windows ユーザーは、設定アプリを使用して VBScript を有効または無効にできます。 設定 -> システム -> オプション機能 -> オプション機能を表示 に移動します。 VBSCRIPT オプション機能は、Windows ではデフォルトで有効になっています。必要に応じて、ここから無効にすることができます。

![]

PowerShell を使用して、VBScript スクリプト エンジンが Windows にインストールされているかどうかを確認することもできます。

Get-WindowsCapability-Online-Name vbs*

![]

VBScript 機能を削除するには、次のコマンドを実行します。

WindowsCapability-Online-Name の削除 "VBScript~~~~0.0.1.0"

または DISM を使用します。

DISM/オンライン/削除-機能/機能名:VBScript

VBscript 機能をインストールするには、次を実行します。

DISM/オンライン/追加機能/機能名:VBScript

Windows ユーザーは、設定アプリを使用して VBScript を有効または無効にできます。 ->->-> に進みます。 Windows では、オプションの機能がデフォルトで有効になっています。必要に応じて、ここから無効にすることができます。PowerShell を使用して、VBScript スクリプト エンジンが Windows にインストールされているかどうかを確認することもできます。VBScript 機能を削除するには、次のコマンドを実行します。または DISM を使用します。VBscript 機能をインストールするには、次のコマンドを実行します。

または:

Add-WindowsCapability-Online-Name "VBScript~~~~0.0.1.0"

VBScript インタープリタが見つからない場合、.vbs 拡張子を持つファイルは関連する実行マッピングを失い、コマンド ラインから VBS スクリプトを実行しようとするとエラーが発生します。


Program 'slmgr.vbs' failed to run: No application is associated with the specified file for this operation.

/images/vbs-script-failed-to-run-no-application-is-associ.png.webp

WScript.exe (グラフィカル モード) または Cscript.exe (コンソール モード) 経由で VBScript を実行しようとすると、エラーが表示されます。

wscript.exe c:\windows\system32\slmgr.vbs


Windows Script HostThere is no script engine for file extension ".vbs"

/images/windows-script-host-there-is-no-script-engine-for.png.webp

VBS スクリプトは、さまざまなタスク (特にドメイン GPO、自動展開スクリプト、SCCM スクリプト、およびタスク スケジューラ ジョブ) を自動化するために企業環境で今でも広く使用されています。 Microsoft では、Windows で VBScript を完全に無効にする前に、使用されているすべてのコードを PowerShell、JavaScript、Python などのより新しいスクリプト言語に移行することをお勧めします。

VBScript が Windows でグローバルに無効になる前に、管理者は環境を積極的に監査して、依然として VBS スクリプトに依存しているタスクやプロセスを特定する必要があります。 SYSMON ツールを使用して、企業コンピューターでの VBS コードの使用に関連するイベントを監査します。


<Sysmon schemaversion="4.50"><EventFiltering><!-- Tracking the loading of vbscript.dll --><ImageLoad onmatch="include"><ImageLoaded condition="contains">vbscript.dll</ImageLoaded></ImageLoad></EventFiltering></Sysmon>

をダウンロードしてください

VBScript が Windows でグローバルに無効になる前に、管理者は環境を積極的に監査して、依然として VBS スクリプトに依存しているタスクやプロセスを特定する必要があります。このツールを使用して、企業コンピュータでの VBS コードの使用に関連するイベントを監査します。sysmon64.exe を参照コンピュータにダウンロードします。次に、vbscript.dll ライブラリの使用状況を記録する XML ファイルを作成します。

この構成を XML ファイルに保存し、VBS 使用状況イベントを監視する Sysmon サービスとデバイス ドライバーをインストールします。

Sysmon64.exe-i sysmon\_settings.xml

/images/sysmon64-exe-install-driver-and-service-to-detect.png.webp

または、「 Sysmon64.exe-c sysmon_settings.xml 」コマンドを実行して、現在の Sysmon 構成を更新します。

今後、VBScript スクリプト エンジンが使用されるたびに、イベント ID 7 のイベント (読み込まれたイメージ: ルール: ImageLoad) がイベント ビューアーに追加されます。 イベント ビューアー -> アプリケーションとサービス ログ -> Microsoft -> Windows -> Sysmon -> Operational でイベントを分析すると、コンピューター上での VBScript の使用状況を特定できます。

Sysmon ログを使用すると、実行された特定の VBScript ファイル、ファイルを開始したユーザー、およびいつ実行されたかを識別できます。

/images/sysmon-event-id-7-vbs-image-loaded-rule-imagelo.png.webp

次の PowerShell スクリプトは、*.VBS 拡張子を持つファイルに関する情報をログに記録するイベントをイベント ビューアーにクエリします: イベント ID 1: Process Create (ルール: ProcessCreate )

` Get-WinEvent-FilterHashtable @{LogName=‘Microsoft-Windows-Sysmon/Operational’; ID=1} | ForEach-Object {

$xml=xml$_.ToXml()

$processPath=$xml.Event.EventData.Data | Where-Object {$_.Name-eq ‘画像’} | Select-Object-ExpandProperty ‘#text’$commandLine=$xml.Event.EventData.Data | Where-Object {$_.Name-eq ‘CommandLine’} | Select-Object-ExpandProperty ‘#text’if ($commandLine-like ‘.vbs') {

PSカスタムオブジェクト@{

作成時間=$_.作成時間

プロセスパス=$プロセスパス

コマンドライン=$コマンドライン

}

}

} `

私の場合、コンピューター上でいくつかの VBScript 実行イベントが見つかりました。

/images/powershell-list-vbs-engine-usage-events.png.webp

したがって、Sysmon を使用すると、企業コンピュータ上の VBScript 使用イベントを監査できます (すべてのシステムに対して VBS 監査を同時に有効にする必要はありません。代わりに、一般的なデバイスのテスト グループに限定する必要があります)。環境内の VBS スクリプトを特定したら、その機能の関連性を評価し、そのロジックを PowerShell に移植できるかどうかを評価します。

  • .vbs (VBScript)

  • .vba (アプリケーション用の Visual Basic)

  • .wsf (Windows スクリプト ファイル)

  • .wsh (WSH設定ファイル)

以下は、VBScript コードを含む一般的なファイル拡張子です。

かなりの数の VBScript ベースのスクリプトが、Windows 環境全体で今でも広く使用されています。例えば。これらには以下が含まれます:

かなりの数の VBScript ベースのスクリプトが、Windows 環境全体で今でも広く使用されています。例えば。これらには、Windows ライセンス認証管理コマンド (Slmgr.vbs)、Microsoft Office ライセンス認証スクリプト (Ospp.vbs)、Office 削除スクリプト (Offscrub)、システム情報表示ツール (Bginfo) などが含まれます。Microsoft は既存のレガシー ツールすべての代替品を提供していないため、近い将来に VBScript が完全に廃止される可能性は低いです。ただし、企業管理者は、事前にこのステップの準備を開始する必要があります。

*️⃣ 出典リンク:

sysmon64.exe、PowerShell スクリプトによるイベント ビューアーへのクエリ、、、、、、Windows ライセンス認証管理コマンド、Ospp.vbs、Office 削除スクリプト、Bginfo、