自動ログイン スクリプトを作成する

WSH を使用すると、自動ログイン スクリプトを作成できます。次の例では、ある会社に 2 つのファイル サーバー ("server1" と "server2") および 2 つのプリント サーバー ("printer1" と "printer2") が存在していることを前提としています。各サーバーにかかる負荷を分散するために、ログイン名が A - K で始まるユーザーは 1 番目のファイル サーバーとプリント サーバーに接続し、ログイン名が L - Z で始まるユーザーは 2 番目のサーバーに接続するように設定します。

メモ   Windows 9x では、ユーザーのログオンが適用されるように待機時間も含まれています。

// JScript.
var oNet, sUser, cInitial, startTime;
oNet = new ActiveXObject("WScript.Network");
// ユーザー名を取得します。Windows 9x および Windows Me では、スクリプト 実行時にユーザー
// がログオンしていない可能性があります。
// ログオンが完了するまで 0.5 秒間隔でチェックを繰り返します。
sUser = oNet.UserName;
startTime = new Date();
while (sUser == "")
{
   var curTime = new Date();
   if (curTime – startTime > 30000) WScript.Quit();
   WScript.Sleep(500);
   sUser = oNet.UserName;
}
// ユーザー名の頭文字に基づいて「H」ドライブおよびプリンタの共有を作成します。
cInitial = sUser.charAt(0).toUpperCase();
if (cInitial < "L")
{
   oNet.MapNetworkDrive("h:", "\\\\server1\\users\\" + sUser);
   oNet.AddWindowsPrinterConnection("\\\\printer1\\hp", "HP LaserJet 4");
}
else 
{
   oNet.MapNetworkDrive("h:", "\\\\server2\\users\\" + sUser);
   oNet.AddWindowsPrinterConnection("\\\\printer2\\hp", "HP LaserJet 4");
}

' VBScript.

Option Explicit
Dim oNet, sUser, cInitial, startTime
' Helper object
Set oNet = CreateObject("WScript.Network")
' ユーザー名を取得します。Windows 9x および Windows Me では、スクリプト 実行時にユーザー
' がログオンしていない可能性があります。
' ログオンが完了するまで 0.5 秒間隔でチェックを繰り返します。
sUser = oNet.UserName
startTime = Now
Do While sUser = ""
   If DateDiff("s", startTime, Now) > 30 Then Wscript.Quit
   Wscript.Sleep 500
   sUser = oNet.UserName
Loop
' ユーザー名の頭文字に基づいて「H」ドライブおよびプリンタの共有を作成します。
cInitial = UCase(Left(sUser, 1))
If (cInitial < "L") Then
   oNet.MapNetworkDrive "h:", "\\server1\users\" & sUser
   oNet.AddWindowsPrinterConnection "\\printer1\hp", "HP LaserJet 4"
Else
   oNet.MapNetworkDrive "h:", "\\server2\users\" & sUser
   oNet.AddWindowsPrinterConnection "\\printer2\hp", "HP LaserJet 4"
End If

参照

基本的な Windows Script Host タスク