タスクスケジュールに別サーバーへログファイルを移動するバッチを登録する、などよくある話です。
例えば、Aサーバーにはログがたまっていて、Aサーバー上では毎朝3時にBサーバーのバックアップフォルダにログを移動するとします。
ネットワークドライブの割り当てたドライブ情報はユーザー単位でその情報を保存しているということの理解が重要です。
つまりAサーバー上で下記のようなコマンドで事前にBサーバーのフォルダをネットワークドライブ(Q:)に割り当てていても、
それはそのバッチを実行したユーザーからしかみえないのです。
net use q: \\192.168.10.1\shared password /user:username
つまり事前に割り当てをしていても、タスクを実行しているのは別ユーザーになります。
そのタスクの実行ユーザーではその割り当てたドライブがみえないのです。
解決策として、バッチ処理自身にネットワーク割り当てのコマンドを記載すればいいとありました。
確かにそれでうまくいきそうです。が何故かうまくいきませんでした。。。
結局私は、
①事前にAサーバーとBサーバーに同じ名前とパスワードのタスク専用ユーザーを作成し、
②Bサーバーにはそのタスク専用ユーザーにアクセス権限を与え、
③Aサーバー上で実行するタスクの実行ユーザーもタスク専用ユーザーにし、
④バッチ処理上ではネットワークドライブの指定を \\192.168.10.1\shared\backaup.txt
②Bサーバーにはそのタスク専用ユーザーにアクセス権限を与え、
③Aサーバー上で実行するタスクの実行ユーザーもタスク専用ユーザーにし、
④バッチ処理上ではネットワークドライブの指定を \\192.168.10.1\shared\backaup.txt
と指定することで解決しました。
ネットワークドライブの割り当ては、タスクの実行ユーザーからは見えないのです。
ipアドレス、もしくはホスト名を使用してパスを使用することが肝心です。
なおこのようなフルパスの表記はUNC(Universal Naming Convention)と呼ばれています。