タスクスケジューラから共有フォルダを参照できない場合は、手動操作のユーザーとタスク実行ユーザーの資格情報が異なることを最初に確認します。さらに、タスク実行時にはドライブレターの割り当てがない場合があります。
ドライブ文字とUNCパスの違いを調べる
- 共有フォルダを
Z:などのドライブ名で指定していないか確認します。 - タスクがサービスアカウントやSYSTEMとして実行されていないか調べます。
- 共有側とNTFS側の両方のアクセス権を確認します。
- 通信切断、名前解決、VPN接続が必要な環境では条件を分けます。
実行アカウントで共有先への権限を確認する
- 問題のタスクを読み取り専用のテスト版として複製します。
- ファイル参照を
\\server\share\folderのようなUNCパスへ明示し、先に存在確認を実施します。 - タスクの実行アカウントに共有への権限があることを組織管理者と確認します。
- 必要に応じネットワーク接続後に実行するトリガーと条件を見直します。
- 成功・失敗のログへパスと例外だけを残し、認証情報は保存しません。
UNCパスへ変えても権限は自動で付かない
- 対話ログオンで見える
Z:が非対話タスクでも使えると想定しないでください。 - パスワードをスクリプトに直書きして解決しないでください。
- 共有フォルダに書き込む前に、読み取りテストが通ることを確認します。
実行アカウントで共有先を読み取る
- 実際のタスクアカウントで対象ファイルを一覧・読み取りできるか試します。
- 共有上へ新規ファイルを書き込むテストが必要なら、専用テスト場所を使い、実データへ触れないようにします。
Zドライブが見つからない場合
対話ログイン時にZ:として割り当てている共有フォルダーは、タスクスケジューラが別のユーザーや非対話セッションで実行されたときに、同じドライブ文字が存在するとは限りません。そのため「手動なら動くがタスクからはファイルなし」という現象が起こり得ます。
実行元の処理でドライブ文字を決め打ちせず、許可されたネットワーク共有のUNCパス(例:\\server\share\data)が使えるか検討します。ただしUNCにすれば自動的に権限が付くわけではありません。タスクの実行アカウントが共有とNTFSの両方に必要な権限を持つか管理者と確認してください。
共有先で実行するタスクと共有先のファイルを読むタスクは別
共有フォルダーにある実行ファイルをタスクから起動する場合、Microsoftにはアクセス拒否などに関する個別のサポート記事があります。単に共有フォルダー内のデータを読み書きするケースとは対処が異なります。まず実行対象が共有上のプログラムなのか、スクリプトが読むデータだけが共有上にあるのかを区別し、タスクに指定したユーザーと権限を確認してください。
