質問: windowsタスクスケジューラは、システム以外のドライブでファイルを実行しません e:/ドライブで実行する必要のある実行可能ファイルがあります。windowsserver2012はc:/ドライブにインストールされています。ターゲット実行可能ファイル(e:/stuff/target.exe)へのフルパスと、作業ディレクトリセット(e:/ stuff /)を持つスケジュールされたタスクを作成しました。これは失敗します。タスクスケジューラは、ディレクトリ名が無効であることを通知します。作業ディレクトリを削除すると、アクセスが拒否されたと表示されます。これは正しくありません。ドライブ全体が共有され、ファイルのアクセス許可がフルコントロールで「全員」に設定されています。タスクを実行しているアカウントは間違いなくそれを実行できます(私はcmd.exeを介して実行できます)。 補足:バックスラッシュ、フォワードスラッシュ、引用符、および非引用符を使用して、パスのすべての順列を試しました。これは kb245272 によるものではありません。「cd」を使用して作業ディレクトリをe:/ stuff /に設定し、実行時に機能するプログラムを呼び出すバッチファイルを作成してみました。残念ながら、タスクスケジューラを介して実行すると、作業ディレクトリが変更されることはなく、システムドライブ(存在しない場合)からtarget.exeを呼び出そうとします。また、c:/ temp /からe:/ stuff /へのシンボリックリンク( "mklink/d")を作成しようとしましたが、タスクスケジューラをだますことができると期待していましたが、リンクをたどりません。ディレクトリが見つからなかったと教えてくれます。タスクスケジューラがこれほど激しく戦う理由も、これを機能させるための正しい方法もわかりません。誰かがタスクスケジューラを使用して非システムドライブでファイルを正常に実行しましたか?
回答: ドライブマッピングは、サービスやタスクには表示されません。代わりにuncパスを使用してください。\\server\share\directory\someprogram.exe 別のオプションは、実行するバッチファイルをスケジュールし、そこにドライブマッピングを含めることです。バッチファイルでは、 pushd/popd を使用して、取得するドライブ文字を気にせずにマップする方が簡単です(pushdはドライブ文字にマップしてそのドライブ文字に切り替えることができ、popdはマップを解除してに戻ることができます)前のドライブ文字)。pushd \\server\share \directory\someprogram.exe popd