自分が書いたタスクをスケジュールするのに苦労しています。
基本的に、Rスクリプト(.bat
)を実行するscript.R
ファイルを作成しました。 .bar
ファイルをダブルクリックすると、実行されます。 script.Rout
に結果ファイルとある種のログファイルが表示されます。
スケジューラーですべてを実行しようとすると、実行するのに問題があります。 Run
をクリックしてタスクを実行すると、タスクはHistory
タブにいくつかのエントリを生成し、タスクの開始と同じ秒で終了することを示します。したがって、基本的には何も実行されません。
どのような問題が発生したかはどこで確認できますか?私のスクリプトは、この.Rout
ファイル内にある出力を書き込みますが、これはタスクスケジューラでは作成されません。
タスクをスケジュールするためのポリシー設定にユーザーを既に追加しました。また、タスクを編集しても、Windowsは文句を言いません。これは、問題ではないと思います。
問題を見つけるためにいくつかの助けを得たいと思います。
編集:
Execute task whether user is logged in or not
を選択しない限り、タスクが実行されていることに気付きました。この設定に切り替えると、スクリプトが実行されません。セキュリティ上の問題はありますか?
タスクスケジューラのプロパティ。 。 。
Windowsから_Task Scheduler
_仕事中properties(一番下のスクリーンショットを参照)。 。 。
1。Generalタブで、Print Screen Aに示すように、以下のオプションが選択/オンまたはオフになっていることを確認します。
Run only when user is logged on
_Run whether user is logged on or not
_Run with the highest privileges
_2。Conditionsタブで、以下のオプションがselect、checked、またはncheckedであることを確認します(Print Screen B
Wake the computer to run this task
_。Actionsタブ、クリックEditそして、バッチスクリプトの場所を指すフルパスに対して、以下の例のようにStart in (optional)
が設定されていることを確認します(禁止二重引用符で囲みます)。にあります[〜#〜] without [〜#〜]最後の円記号 "_\
_" Print Screen C
一度押すとOK(2。上記)これを実行するための資格情報を要求する必要があり、その資格情報はEXECUTE
にアクセスする必要があるものです。存在するバッチファイル。スクリプトで実行しているバッチファイルを実行するためのアクセス権も必要です。
このプロセスの静的サービス/プロキシユーザーアカウントを設定し、その資格情報を使用してプロセスを実行することをお勧めします。パスワードが強力で、期限切れにならないように設定されていることを確認する必要があります。また、EXECUTE
バッチにアクセスして、バッチスクリプトプロセスが実行しているものやコマンドを実行する必要があります。リソースなど。それも利用します。
オプション_Run whether user is logged on or not
_をチェックして、タスクスケジューラから期待どおりに実際に実行するには、オプション_Run with highest privileges
_をチェックする必要があるようです。
エラーチェック
実際のバッチスクリプトに問題があるが、Windows タスクスケジューラは実際に実行して実行しますが、何らかの理由でバッチスクリプトロジックがエラーになるなどの場合、タスクスケジューラこのレベルではこの失敗が見られない場合があります。その観点から(ほとんどの場合、デフォルトで)、バッチファイルを実行でき、実行するためのアクセス権がある限り、そのジョブは正常に実行されます。
エラーチェックまたはロギングをバッチスクリプトロジックに追加して、このレベルでキャッチ(またはトラブルシューティング)の問題を確認します。バッチスケジューラが実行するセキュリティコンテキストが、バッチスクリプトが実行されるコマンドやリソースなどに適切にアクセスできること。
回答:Windowsでは、この特権はローカルまたはドメインセキュリティポリシーを介して付与されます。 ローカルセキュリティポリシーを使用してこれを行うには、次の手順に従います。
- コントロールパネルで、管理ツールを開き、次にローカルセキュリティポリシーを開きます。
- 下セキュリティ設定、ローカルポリシーを開き、ユーザー権利の割り当てを強調表示します。
- 見つけるバッチジョブとしてログオン。 propertiesを開き、この権限を必要とするユーザーを追加します。
- 終了したら、保存変更を行い、ローカルセキュリティ設定ウィンドウを閉じます。
変更はすぐに有効になります。ドメインセキュリティポリシーを変更するには、ドメインコントローラで、コントロールパネルのドメインセキュリティポリシーユーティリティを使用します。
スクリプトがマップされたネットワークドライブを参照しているが、それを_Run whether the user is logged on or not
_にしたい場合、このコンテキストでは、バッチプロセスが期待どおりに動作するためにドライブマッピングが実際に存在しない可能性があります。
可能であれば、問題を回避するために、マップされたドライブ文字ではなく、バッチスクリプトロジックでUNC
パスを使用してください。それ以外の場合は、バッチプロセスの開始時に_PUSHD \\ServerName\ShareName
_を使用し、バッチプロセスの終了時にPOPD
を使用する必要がある場合があります。バッチプロセスの開始時に_Net Use X: \\ServerName\ShareName
_を使用してドライブをマップし、バッチプロセスの終了時に_Net Use X: /DELETE
_を使用してドライブを切断することができます。
PRINT SCREENS
Print Screen A
Print Screen B
Print Screen C