【入門編】【認証情報付きネットワークドライブ割り当て】WScript.Network.MapNetworkDrive の全引数を駆使した異ドメイン接続自動化 – VBScript (Visual Basic Scripting Edition)解析バイブル

スポンサーリンク

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で「繋がった!」という感動を味わってください。そこからが、本当のエンジニアリングの始まりです。

何か詰まったら、いつでも戻ってきてくださいね。応援していますよ。

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