Windowsコンポーネント無効化スクリプト

Windowsオペレーティングシステムの管理に関する一連の記事の続き。 前の記事では、サービスパックを使用して作業が行われ、今回はシステムコンポーネントを使用して作業が行われました。 追加のコンポーネントはOSの機能を拡張しますが、それらの多くは、ほとんどのユーザーにとって役に立たないものです。 「不要な」コンポーネントを無効にする便利なスクリプトをお勧めします。 スクリプトコマンドはDISMツールにアクセスし、インストールされたシステムとスタンドアロンイメージの両方に適用できます。 スクリプトは、 dism.exeユーティリティのバージョンを決定し、必要なコマンドを置き換えます。 分岐はターゲットOSのバージョンに従って実装されるため、1つのスクリプトで、Windowsの異なるバージョンに対して無効にするコンポーネントを指定できます。



このスクリプトでコンポーネントを無効にすることは元に戻せます。 これは主に、[スタート]メニューから不要なプログラムへのリンクを削除するために行います。 ここでは、たとえば、無効にするWindowsのバージョンごとに2つのコンポーネントが指定されています。 仕事でこのスクリプトを使用する人は、それを補足する必要があります。 不要なコンポーネントを特定し、それらの切断をスクリプトに追加します。 簡単な変更により、その逆も可能です-コンポーネントを含めます。 必要に応じて、Internet Explorer、Media Player、Windows Search、および.NET Framework 3.5.1のみを残します。 後者は、ファイルの削除により、製造元によってWindowsの新しいバージョンで無効にされています。有効にするために、別のスクリプトがあります。これについては後で説明します。



スクリプト



@echo off title Disabling features in Windows image set _file=install.wim set _img=Online set _mnt=mount set _tool=7 set _word=Wim dism /English /LogLevel:1 /Get-Help | find "Version: 6.1" > nul || set _tool=8 if %_tool% GTR 7 set _word=Image :pre_menu cls if not exist %_file% goto :version dism /English /LogLevel:1 /Get-%_word%Info /%_word%File:%_file% echo ------------------------------------------------------------------------------- if %ERRORLEVEL% NEQ 0 pause & exit set /p _ind=Input index or press [Enter] for quit: || exit if %_ind% EQU 0 goto :version if %_ind% GTR 0 if %_ind% LEQ 24 goto :ind_menu goto :pre_menu :ind_menu cls dism /English /LogLevel:1 /Get-%_word%Info /%_word%File:%_file% /Index:%_ind% echo ------------------------------------------------------------------------------- if %ERRORLEVEL% NEQ 0 pause & goto :pre_menu choice /c abcdefghijklmnopqrstuvwxyz /n /m "Mount selected image? [m] " if %ERRORLEVEL% EQU 13 goto :mount goto :pre_menu :version dism /%_img% /English /LogLevel:1 /Get-Help | find "Image Version: 6.1" > nul && goto :disable-7 dism /%_img% /English /LogLevel:1 /Get-Help | find "Image Version: 6.3" > nul && goto :disable-9 dism /%_img% /English /LogLevel:1 /Get-Help | find "Image Version: 10" > nul && goto :disable-A goto :unmount :disable-7 cls echo Getting list of features. Please wait... dism /%_img% /English /LogLevel:1 /Get-Features /Format:Table > %TEMP%\features.txt echo ------------------------------------------------------------------------------- set /a _num+=1 echo %_num% Disable: WindowsGadgetPlatform call :state WindowsGadgetPlatform &&^ dism /%_img% /English /LogLevel:1 /Disable-Feature /FeatureName:WindowsGadgetPlatform /NoRestart echo ------------------------------------------------------------------------------- set /a _num+=1 echo %_num% Disable: MediaCenter call :state MediaCenter &&^ dism /%_img% /English /LogLevel:1 /Disable-Feature /FeatureName:MediaCenter /NoRestart echo ------------------------------------------------------------------------------- del %TEMP%\features.txt if not exist %_file% exit goto :unmount :disable-9 cls echo Getting list of features. Please wait... dism /%_img% /English /LogLevel:1 /Get-Features /Format:Table > %TEMP%\features.txt echo ------------------------------------------------------------------------------- set /a _num+=1 echo %_num% Disable: Printing-Foundation-Features call :state Printing-Foundation-Features &&^ dism /%_img% /English /LogLevel:1 /Disable-Feature /FeatureName:Printing-Foundation-Features /NoRestart echo ------------------------------------------------------------------------------- set /a _num+=1 echo %_num% Disable: Windows-Defender-Default-Definitions call :state Windows-Defender-Default-Definitions &&^ dism /%_img% /English /LogLevel:1 /Disable-Feature /FeatureName:Windows-Defender-Default-Definitions /NoRestart echo ------------------------------------------------------------------------------- del %TEMP%\features.txt if not exist %_file% exit goto :unmount :disable-A cls echo Getting list of features. Please wait... dism /%_img% /English /LogLevel:1 /Get-Features /Format:Table > %TEMP%\features.txt echo ------------------------------------------------------------------------------- set /a _num+=1 echo %_num% Disable: MicrosoftWindowsPowerShellV2Root call :state MicrosoftWindowsPowerShellV2Root &&^ dism /%_img% /English /LogLevel:1 /Disable-Feature /FeatureName:MicrosoftWindowsPowerShellV2Root /NoRestart echo ------------------------------------------------------------------------------- set /a _num+=1 echo %_num% Disable: NetFx4-AdvSrvs call :state NetFx4-AdvSrvs &&^ dism /%_img% /English /LogLevel:1 /Disable-Feature /FeatureName:NetFx4-AdvSrvs /NoRestart echo ------------------------------------------------------------------------------- del %TEMP%\features.txt if not exist %_file% exit goto :unmount :state findstr %1 %TEMP%\features.txt | find "Enable" > nul exit /b :mount cls md %_mnt% dism /English /LogLevel:1 /Mount-%_word% /%_word%File:%_file% /Index:%_ind% /MountDir:%_mnt% if %ERRORLEVEL% NEQ 0 rd %_mnt% & pause & exit set _img=Image:%_mnt% goto :version :unmount cls if not %_img%==Online ( dism /English /LogLevel:1 /Unmount-%_word% /MountDir:%_mnt% /Commit rd %_mnt% ) set _img=Online goto :pre_menu
      
      





使用する



このスクリプトは、オンラインシステムとスタンドアロンイメージの両方でコンポーネントを無効にすることができます。 スタートアップフォルダー-install.wimにイメージファイルがない場合、スクリプトは完全自動モードでコンポーネントを切断します。 スタートアップフォルダー-install.wimにイメージファイルがある場合、スクリプトはそこから既存の「インデックス」に関する情報を読み取り、番号の入力を求めます。 その後、選択した「インデックス」に関する拡張情報が表示され、マウント要求が発行されます。 いずれかのキーを押すと戻り、[m]キーを押すと、イメージのマウント、コンポーネントの切断、イメージのアンマウント、「indesca」を選択するためのメニューに戻るという一連のアクションが起動します。 次に、別の「インデックス」を選択して、コンポーネントを無効にします。 番号0の「インデックス」を選択すると、「ライブ」OS上のコンポーネントの無効化が開始されます。



コード解析



最初に、 setコマンドは変数を設定します。 install.wimイメージファイルの推定名を変更できます (たとえば、 install.esdに )。 マウントフォルダーの名前を変更したり、マウントフォルダーをスタートアップフォルダー外に配置する必要がある場合はパスを指定したりできます。 彼は、サービスパックの以前のスクリプトのように、ログの「レベル」の設定を拒否し、すべてのコマンドでのみエラーに関する情報を直接規定しました- / LogLevel:1 。 また、すべてのチームで/ Englishスイッチを追加して、すべてのメッセージが英語で表示されるようにしました。



スクリプトはOSの異なるバージョンで実行できるため、一連のコマンドが異なるDISMシステムの異なるバージョンにアクセスできます。 したがって、すべてのコマンドの6.1以降のバージョンでは、 Wimという単語 Imageに置き換えられますが、コマンドの古い「名前」は後方互換性のために残されています。 スクリプトの最初に、 dism.exeユーティリティのバージョンが決定され、必要な単語がすべてのコマンドに置き換えられます。 バージョンを特定せずに実行することも可能ですが、スクリプトでこの機能を使用してWindowsイメージから情報を取得するため、コードを書き換えませんでした。



:pre_menu



アドバンスメニュー。 エラー制御を使用したwimファイルに関する基本情報の取得。 画像ファイルがない場合は、オンラインモードで起動します。 1つの画像に「インデックス」の最大数に関する情報が見つからなかったため、値を24に設定しました。



:ind_menu



インデックスメニュー。 エラー制御付きのwimファイルで選択された「インデックス」に関する拡張情報を取得します。 「インデックス」をマウントする提案。



:バージョン



ターゲットシステムのバージョンを確認します。 必要な行が見つかると、指定されたラベルへの移行が実行されます。 文字列が見つからない場合は、アンマウントします。



:disable-7:disable-9:disable-A



対象サービスシステムのラベル。 私はWindows 8.1-9、およびWindows 10-Windows A(トピックを理解している人)を呼び出すので、これらの名前はラベルに記載されています。 このブロックの開始時に、すべてのコンポーネントのステータスが要求され、 features.txtファイルに保存されます。 将来的には、切断プロセスを高速化し、すでに切断されているものを切断しようとしないために、各コンポーネントのステータスの予備チェックが行われます。 ブロックの最後には、一時ファイルの削除とアンマウントがあります。



:状態



コンポーネントのステータスを確認します。 エラーコードによる結果をグローバル変数%ERRORLEVEL%に返す擬似関数。 コンポーネントの名前を含む文字列は、 features.txtファイルで検索され、「Enable」という単語が見つかって、見つかった場合、信号はオフになります。



:マウント



イメージをマウントします。 マウントフォルダは事前に作成されています。 エラー制御。 イメージの仕様を定義する変数が変更され、オフラインイメージへのパスを指すようになりました。



:マウント解除



イメージをアンマウントします。 オンライン保守(/オンライン)を実行した場合、マウントを解除する必要はありません。 変数を元の値に戻す。



起こりうる問題



下位バージョンのシステムで上位バージョンのイメージを提供すると、フリーズやエラーが発生する可能性があります。 つまり、Windows 8.1または10のイメージファイルを処理するためにWindows 7で試す必要はありません。また、すべてのコマンドを正常に実行するには、ユーザーアカウント制御を無効にする必要があります。EnableLUAパラメーターを0に設定します。



質問



印刷に関連するすべてのコンポーネントをオフにし、プリンターは印刷を継続し、スキャナーはスキャンを継続します。 私は、印刷コンポーネント(たとえば、 Printing-Foundation-Featuresなど)が高度な機能(たとえば、ネットワーク上でアクセス可能なプリンターのセットアップ)に使用されると想定しています。 そうですか?



All Articles