[VBS] VBSをログオンスクリプトの代用に

※当サイトでは広告を掲載しています

会社内で使用しているPCのOSは、95%がドメインに参加できないエディションのWindowsなので、全てのPCの設定を変更する場合は、1台1台設定して回らないといけないのです。とても大変。

かといって、各自でPCの設定を変更してね、というのはほぼ不可能。

ということで、VBSを使ってログオンスクリプトのようなものを作ってみたので、メモメモ。

必要なものはテキストエディタとやる気。Windows標準のメモ帳でも大丈夫。そして、最初だけはスタートアップ登録が必要なので、全PCを回る必要あり。

今回は、ネットワーク内の誰もが読み書きできる(←ここ重要)共有ドライブ「\\192.168.1.1\logon_scripts」に、各PCが起動時に実行するVBSおよびバッチファイルを置きます。

PCのスタートアップに置くVBSを作成

Dim objWShell
Set objWShell = CreateObject( "WScript.Shell" )
objWShell.Run "cmd /c \\192.168.1.1\logon_scripts\logon_scripts.bat", 0
Set objWShell = Nothing

特に難しいことはしていませんが、3行目の実行するコマンド「logon_scripts.bat」の後ろに指定しているパラメータで、実行時の状態を指定します。

0:ウィンドウを非表示
1:通常のウィンドウ、かつ最前面のウィンドウ
2:最小化、かつ最前面のウィンドウ
3:最大化、かつ最前面のウィンドウ
4:通常のウィンドウ、ただし、最前面にはならない
6:最小化、ただし、最前面にはならない

このファイルを、例えば「logon_scripts.vbs」という名前をつけて保存し、Windowsのスタートアップフォルダに入れておけば、PC起動時に毎回サーバ上のバッチファイルを実行してくれるようになります。

サーバ上に置くバッチファイルを作成

サーバ上に置くバッチファイルは、上で作成したVBS内で指定した「logon_scripts.bat」という名前にします。このバッチファイルに書いた処理を、PC起動時に毎回実行することになります。

今回は例ということで、PCの情報を収集できる「PCView」というアプリを起動時に毎回実行するように設定します。PCViewの実行ファイルは「\\192.168.1.1\logon_scripts\PCView」の中に置いていると仮定します。

@echo off
cd /d %~dp0
\\192.168.1.1\logon_scripts\PCView\PCView.exe > nul 2>&1
exit /b

これだけで、PC起動時に毎回PC情報を収集できるようになりました。

上記の例ではバッチファイルから実行ファイルを呼んでいますが、VBSを呼ぶこともできます。

cscript \\192.168.1.1\logon_scripts\script\example.vbs

こんな感じ。

また、バッチファイルやVBSで、特定の(例えばDESKTOP-PCというコンピュータ名の)PCに対して特定の処理を実行させる場合。

バッチファイル

if "%COMPUTERNAME%" == "DESKTOP-PC" (
    処理
)

VBS

Dim objNetwork
Set objNetwork = CreateObject( "WScript.Network" )
If StrComp( objNetwork.ComputerName, "DESKTOP-PC" ) = 0 Then
    処理
End If
Set objNetwork = Nothing



このような感じでバッチファイルやVBSに処理を書いていけば、例えばネットワークドライブの追加・変更を行う場合に全てのPCを回らなくても、それぞれのPCが起動したタイミングで自動設定できるようになるのです。

ついでに、全てのPCのPC情報を一元管理できれば、不正アプリの監視とか、どのPCがそろそろ買い替え候補だとか、社内のIPアドレスはどこが空いているか等を収集・一覧化するツールなんかを作ってみてもいいですね。

WindowsのPro版を導入していない、社内PCの管理ツールを買ってもらえない、などの事情があれば、こんな方法もあるよ、ってことで。

コメント

タイトルとURLをコピーしました