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

記事のトップ画像

コマンドラインからネットワークドライブの割り当ては、通常 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

%で囲ってある部分を、実際に利用したい値に変更するだけで利用できます。よろしければご活用ください。