VBScriptで異ドメインの壁を越える:`MapNetworkDrive`の深淵と極意
こんにちは。自動化の現場で血と汗を流してきた皆さんの、頼れる「先輩」です。
今日は、業務自動化の登竜門でありながら、多くのエンジニアが「なぜか繋がらない」「パスワードが弾かれる」と頭を抱える「ネットワークドライブの割り当て」についてお話しします。
特に、ドメインが異なる環境や、権限の異なるユーザーで共有フォルダにアクセスする。この一見単純な処理に、VBScriptの真髄が詰まっています。ここを突破できれば、君はもう「マクロの記録」に頼るだけの初心者ではありません。
—
1. なぜ「MapNetworkDrive」なのか
WSH(Windows Script Host)の `WScript.Network` オブジェクトには、共有フォルダをドライブレター(Z:など)に割り当てる `MapNetworkDrive` メソッドがあります。
このメソッドの真の力は、「認証情報を明示的に流し込める」という点にあります。これを使えば、たとえPCがドメインに参加していなくても、別ドメインのファイルサーバーに対して、「私はこの権限を持つユーザーです」と名刺を提示して強引にアクセスを通すことができるのです。
—
2. 異ドメイン接続を攻略するコード
まずは、現場でそのまま使える「鉄板のコード」を見てください。
‘ — ネットワークドライブ割り当ての極意 —
Option Explicit
Dim objNetwork
Dim strDriveLetter, strRemotePath, strUser, strPassword
‘ オブジェクトを生成(WSHの基本です)
Set objNetwork = WScript.CreateObject(“WScript.Network”)
‘ 設定値の定義
strDriveLetter = “Z:” ‘ 割り当てるドライブ名
strRemotePath = “\\Server\Share” ‘ 接続先パス
strUser = “DOMAIN\UserName” ‘ ユーザー名(ドメイン名\ユーザー名)
strPassword = “YourPassword” ‘ パスワード
On Error Resume Next ‘ エラーをハンドリングするための防壁
‘ MapNetworkDriveの全引数を駆使する
‘ 引数: (ドライブ名, 共有パス, プロファイル保存, ユーザー, パスワード)
objNetwork.MapNetworkDrive strDriveLetter, strRemotePath, False, strUser, strPassword
If Err.Number <> 0 Then
WScript.Echo “接続に失敗しました。エラーコード: ” & Err.Number
Else
WScript.Echo strDriveLetter & ” への接続が完了しました。”
End If
On Error GoTo 0 ‘ エラーハンドリングを解除
Set objNetwork = Nothing ‘ メモリを解放する行儀の良さ
このコードの「賢い」ポイント
1. `On Error Resume Next`: ネットワーク接続は不安定なのが常識。失敗した時にスクリプトが即死しないよう、必ずエラー処理の盾を構えましょう。
2. 第3引数 `False`: これは「プロファイルに保存するか」というフラグです。セキュリティを考慮するなら、基本は `False` にすべきです。PC内にパスワードを残さないことが、プロのエンジニアの流儀です。
3. `Set … = Nothing`: VBScriptは古い言語ゆえ、オブジェクトの解放をサボるとメモリリークの原因になります。最後の一行まで気を抜かないこと。
—
3. 初学者が必ず陥る「3つの罠」
コードを書く前に、この「壁」を知っておいてください。
① 「すでに接続されています」エラー
すでに同じドライブレターが使用されている場合、エラーになります。スクリプトを実行する前に、`objNetwork.RemoveNetworkDrive “Z:”, True` を先頭で叩いて、既存の接続を強制切断するロジックを入れるのが定石です。
② ドメイン名の省略
`DOMAIN\UserName` の部分で、ドメイン名を省略すると、ローカルマシンのユーザーとして認証を試みてしまいます。「別ドメイン」を狙うなら、必ずフルパスで指定してください。
③ 権限の不一致
実行しているユーザー自身に、その共有フォルダへの読み書き権限がない場合、パスワードを指定しても弾かれることがあります。実行時の「コンテキスト(誰が実行しているか)」を常に意識してください。
—
4. 先輩からのアドバイス:自動化の先にある景色
VBScriptは古臭いと言われることもありますが、「OSに標準搭載されている」という圧倒的な強みがあります。追加のライブラリインストールも不要。メモ帳さえあればどこでも動く。この「環境を選ばない」という特性は、企業のインフラ運用において今なお最強の武器です。
今回紹介した `MapNetworkDrive` を使いこなせるようになれば、次は `FileSystemObject` を使ったファイル操作や、タスクスケジューラとの連携による深夜の定期バックアップなど、自動化の夢はどこまでも広がります。
まずはこのコードを書き写し、自分のPCで「繋がった!」という感動を味わってください。そこからが、本当のエンジニアリングの始まりです。
何か詰まったら、いつでも戻ってきてくださいね。応援していますよ。
