alfort's Blog

Linuxエンジニアのメモ

WSLからVBS(Visual Basic Script)を実行する方法のメモ

WSL から VBS(Visual Basic Script)を実行する

WSL から VBS(Visual Basic Script)を実行する方法を知りたくなったのでそのメモ。

そもそもWindowsで完結するのになぜWSLがいるのか?

そもそも、VBSは定期的に実行したい処理はVBSでしか提供されていない。 このためWindows上で完結させてしまうのが一番いいのだが、Windows自体に明るくなく、 どうすればバッチ処理を行えるのか、定期的に実行する方法は…などなど、調べることがたくさんある。

一方でLinuxについてはSystemdやCronのような仕組みを使って定期的に実行する方法がわかっているし、 最近のWSLではSystemdが動作するようになっているし、WSLからWindows上のCドライブをマウントすれば、 Windows向けのプログラムを実行することもできる。 ということで、Windowsでのバッチ処理だの定期的な処理だのを学ぶコストをできるだけ抑えるには VBSスクリプトをWSLから実行したほうが手っ取り早いのでこんなことをやろうとした。

VBSファイルを実行するためのプログラム

VBSファイル自体は単純なテキストファイルで、エディターを使って簡単に書き換えることができる。 Pythonシェルスクリプトのように、スクリプトファイルを実行するためのインタープリタがあるはずである。 ということで、ググってみると、VBSファイルを実行するためのプログラムは、cscript.exeらしい。 また、私が使っているWindows11というか64bit版のWindowsでは、cscript.exeC:\Windows\SysWOW64配下にある。

WSLからWindowsファイルシステムにアクセスする

WSLからWindows上のファイルシステムにアクセスするためには、/etc/fstabmountコマンドを使って、 Windows上のファイルシステムをマウントする必要がある。 以下のような内容で、/etc/fstabにエントリを追加、mountコマンドによる自動マウントを行うことで、 Windows上のCドライブをマウントすることができる。

C: /mnt/c drvfs rw,noatime,uid=1000,gid=1000,case=off,umask=22 0 0

また、WSL上からは/mnt/cというパス配下に色々ディレクトリが見えるようになっていて、 ここがCドライブのルートディレクトリになる。

WSLからVBSを実行する

あとは簡単で、WSL上のシェルから以下のようなコマンドを実行するだけでVBSファイルを実行することができる。 実行したいスクリプトWindows上のデスクトップに置いてある、hello.vbsというファイルとする。

$ /mnt/c/Windows/SysWOW64/cscript.exe /mnt/c/Users/username/Desktop/hello.vbs

これで、WSLからVBSファイルを実行することができる。