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)」を用いるが、同ツールはコマンドラインからの操作が可能だ。
例えば「/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)のバージョンを出力する。
今回のシェルスクリプトも構造はシンプルだ。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」に変更してほしい。
阿久津良和(Cactus)