【再起動しても消えない】バッチファイルでのネットワークドライブの割り当て方

コマンドラインからネットワークドライブの割り当ては、通常 net use を使います。ですが、これだけでは PC 再起動の度に割り当て情報が消えてしまいます。persistent コマンドを使うことで解決しますが、今度は資格情報が保持されません。
- エクスプローラを開き、ネットワークドライブの割り当てを行う。
- ネットワークパスを指定し、ドライブを割り当てる。
- 資格情報を入力し、資格情報の保存をクリックする。
今回は以上と同等の操作を、バッチファイルで表現する方法をご紹介いたします。
ソースコード
まず結論から。以下のコードで実現できます。
cmdkey /add:%server1% /user:%username% /pass:%password%
net use O: %directory% /savecred
%server1% | 接続するサーバ名(\〇〇... の〇〇の部分) |
%username% | 資格情報(ユーザ名) |
%password% | 資格情報(パスワード) |
%directory% | 割り当てるネットワークパス |
上記を当てはめて実行することで、ネットワークドライブ、資格情報がともに保持されます。
cmdkey、 net use の使い方
バッチファイル内で使用した、関数の説明をしておきます。
cmdkey
cmdkey は、Windows 資格情報を操作するための関数です。ファイルサーバーにアクセスする際に、入力を促される情報のことですね。
cmdkey のオプション
cmdkey /add:%server% /user:%username% /pass:%password%
add | IP アドレス、またはコンピュータ名 |
user | 接続先のアカウント名 |
pass | 接続先のパスワード |
net use
net use は、ネットワークドライブを取り扱う関数です。割り当てや、切断などの操作が可能です。
net use のオプション
net use %drive_letter% %directory% %password% /user:%username% /savecred
最初の引数 | 割り当てるドライブレター(システムドライブの C: にあたる部分) |
2 つ目の引数 | ネットワークドライブとして割り当てたいディレクトリパス |
3 つ目の引数 | 接続先のパスワード |
/user | 接続先のアカウント名 |
/savecred | 資格情報が必要な場合、入力されたアカウント名とパスワードを保存する。 |
/persistent | この net use コマンドで設定したドライブ情報を、次回ログオン以降も自動的に復元する。 |
実装例、サンプルコード
ネットワークドライブへの割り当ては複数行いたいケースもあると思いますので、同時に 4 件のネットワークドライブを割り当てるサンプルコードを紹介しておきます。
@echo off
setlocal
rem ==========================
rem 資格情報作成
rem ==========================
echo 資格情報を作成します
cmdkey /add:%server1% /user:%username% /pass:%password%
echo サーバー : server1の資格情報を登録しました
cmdkey /add:%server2% /user:%username% /pass:%password%
echo サーバー : server2の資格情報を登録しました
cmdkey /add:%server3% /user:%username% /pass:%password%
echo サーバー : server3の資格情報を登録しました
rem ==========================
rem ドライブ割り当て
rem ==========================
echo;
echo ネットワークドライブを割り当てます
net use X: %directory% /savecred
echo Xドライブへの割り当てが完了しました
net use Y: %directory% /savecred
echo Yドライブへの割り当てが完了しました
net use Z: %directory% /savecred
echo Zドライブへの割り当てが完了しました
echo 処理が全て完了しました
pause
endlocal
%で囲ってある部分を、実際に利用したい値に変更するだけで利用できます。よろしければご活用ください。