last modified: Tue May 18 14:14:22 JST 2021

ネットワークドライブが繋がらない

徐々に蝕まれていく

ある日(2 年以上前の気がする), ネットワークドライブが繋がらなくなった. 2 台の NAS を運用しているが, 片方(Synology)は繋がる. もう一方(TeraStation)の方が繋がらない. 最初はメインマシンのみで起きていたが, 徐々に他のマシンでも発生. 徐々に耐え難くなって来る... 詳しい症状は以下の通り.

エラーメッセージ 1

エラーメッセージ 2

ネットで調べる

この様な症状のため結局「サインイン時に再接続する(R)」のを諦め, P ドライブだけはログイン時に毎回設定することで対応していました.

実際には単純に諦めていたわけではなく, インターネットであれこれ解決方法を調べて試しました. 検索して良く出ててきたのは SMB バージョンの問題でしたがこれも問題ありません. 何せホスト名でダメなときはネットワークアドレス, ネットワークアドレスでダメなときはホスト名でアクセスはできるので, ネットに出てくる「全くアクセスできない」と言う症状とは異なるようです.

スクリプト実行

P ドライブにアクセスする必要が出来たら毎回ネットワークドライブ設定する... 非常に面倒です. 「せめてバッチ処理で済ます事はできないか?」と思い, 検索したところありました. WSH(Windows Script Host)を使う方法です. 具体的には以下の内容を書いた適当なファイル(私は例にあった netdrv.vbs)を作れば OK.

WScript.sleep 3000
Set objNetwork = CreateObject("WScript.Network")
objNetWork.MapNetworkDrive "P:","\\TeraStation\share"

このファイルをダブルクリックすれば動作を確認出来ます. (実行前に該当ドライブは空いている必要があります.)

このファイルをスタートアップフォルダ((User)\AppData\Roaming\Microsoft\Windows\スタート メニュー\プログラム\スタートアップ\)に置けばログイン時に P ドライブが作成されます. これでほぼ「サインイン時に再接続する(R)」のと同じような事が実現出来ます.

ほぼと書いたのは, 完全に同じではなく少し勝手が違うからです. 通常はログインしたらすぐにそのドライブにアクセスできます. が, このスクリプト実行の場合ドライブが加わるまでに時間が掛かります. 現状立ち上がってから 10 秒ほど経過した後, 徐に接続されます. 毎回面倒な作業をしていたのに比べれば楽になりました. 良しとしましょう.