Windows 10 Anniversary UpdateからサポートしたWSL(Windows Subsystem for Linux)。その結果としてWindows 10上でもBUW(Bash on Ubuntu on Windows)が動作し、各種Linuxコマンドが利用可能になった。本連載ではWSLに関する情報や、Bashから実行するシェルスクリプトを紹介する。

DirectXおよびWDDMのバージョンを確認する

Windowsのマルチメディア機能を提供するDirectXは、アプリケーションやPCゲームの動作スペックを定める指針として用いられることが多いものの、確認する方法は少々面倒である。通常であれば「DirectX診断ツール(dxdiag.exe)」を用いるが、同ツールはコマンドラインからの操作が可能だ。

「DirectX診断ツール」を実行した状態

オプション「/?」を付けて「dxdiag.exe」を実行すると、各オプションが示される

例えば「/x {ファイル名}」を付ければ、診断結果をXMLファイルとして出力できるものの、その情報は多岐にわたるため、目視で必要な情報を拾い上げることは難しい。そこでBUWを利用し、必要な情報だけを抽出するシェルスクリプトを用意した。

いつもどおり、任意のテキストエディターに以下の内容を入力し、必要に応じて出力先のパスなどを変更してから、chmodコマンドなどで実行権限を与えて動作を確認してほしい。

 #!/bin/bash

 IFS_Backup=$IFS
 IFS=$'\n'
 TmpFile=foo.txt

 dxdiag.exe /whql:off /t $TmpFile
 for Obj in `cat $TmpFile`; do
    case ${Obj} in
        *DirectX\ Version* )
            StrVer=$(echo $Obj | cut -d " " -f 13-14)
            echo "DirectXのバージョン:" $StrVer
            ;;
        *Driver\ Model* )
            StrWDDM=$(echo $Obj | cut -d " " -f 12)
            echo "WDDMのバージョン:" $StrWDDM
            ;;
    esac
 done

 rm $TmpFile
 IFS=$IFS_Backup

本シェルスクリプトを実行すると、dxdiag.exeが出力したファイルから情報を抜き出し、DirectXとWDDM(Windows Display Driver Model)のバージョンを出力する。

シェルスクリプトを実行結果。DirectXとWDDMのバージョンを出力している

今回のシェルスクリプトも構造はシンプルだ。5行目はmktempコマンドで作成したファイルを出力先にした場合、正しく動作しなかったため、一時ファイル名を指定している。7行目はWHQLデジタル署名の確認をスキップするオプション「whql:off」を付与し、出力ファイルはテキストファイルとした。

後は8~19行目で一時ファイルの内容を元にforループを回し、caseで情報を持つ文字列でマッチさせてから、cutコマンドで加工している。なお、Windows 10 Insider PreviewとWindows 10 バージョン1703ではDirectX診断ツールの出力結果が少々異なるようだ。Windows 10バージョン1703で用いる場合、15行目のcutコマンドで指定するフィールド値を「11」に変更してほしい。

Windows 10 バージョン1703上で実行した状態。フィールド値を「11」に変更しないと、WDDMのバージョンが正しく表示されない

阿久津良和(Cactus)