web-dev-qa-db-ja.com

Windows7でタスクをスケジュールする際の問題

自分が書いたタスクをスケジュールするのに苦労しています。

基本的に、Rスクリプト(.bat)を実行するscript.Rファイルを作成しました。 .barファイルをダブルクリックすると、実行されます。 script.Routに結果ファイルとある種のログファイルが表示されます。

スケジューラーですべてを実行しようとすると、実行するのに問題があります。 Runをクリックしてタスクを実行すると、タスクはHistoryタブにいくつかのエントリを生成し、タスクの開始と同じ秒で終了することを示します。したがって、基本的には何も実行されません。

どのような問題が発生したかはどこで確認できますか?私のスクリプトは、この.Routファイル内にある出力を書き込みますが、これはタスクスケジューラでは作成されません。

タスクをスケジュールするためのポリシー設定にユーザーを既に追加しました。また、タスクを編集しても、Windowsは文句を言いません。これは、問題ではないと思います。

問題を見つけるためにいくつかの助けを得たいと思います。

編集:

Execute task whether user is logged in or notを選択しない限り、タスクが実行されていることに気付きました。この設定に切り替えると、スクリプトが実行されません。セキュリティ上の問題はありますか?

4
drmariod

タスクスケジューラのスケジュールされたバッチスクリプトが実行されていないチェック

タスクスケジューラのプロパティ。 。 。

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タブで、以下のオプションがselectchecked、またはncheckedであることを確認します(Print Screen B

    • チェック_Wake the computer to run this task_
  • Actionsタブ、クリックEditそして、バッチスクリプトの場所を指すフルパスに対して、以下の例のようにStart in (optional)が設定されていることを確認します(禁止二重引用符で囲みます)。にあります[〜#〜] without [〜#〜]最後の円記号 "_\_" Print Screen C


セキュリティに関する考慮事項

  • 一度押すとOK2。上記)これを実行するための資格情報を要求する必要があり、その資格情報はEXECUTEにアクセスする必要があるものです。存在するバッチファイル。スクリプトで実行しているバッチファイルを実行するためのアクセス権も必要です。

  • このプロセスの静的サービス/プロキシユーザーアカウントを設定し、その資格情報を使用してプロセスを実行することをお勧めします。パスワードが強力で、期限切れにならないように設定されていることを確認する必要があります。また、EXECUTEバッチにアクセスして、バッチスクリプトプロセスが実行しているものやコマンドを実行する必要があります。リソースなど。それも利用します。

  • オプション_Run whether user is logged on or not_をチェックして、タスクスケジューラから期待どおりに実際に実行するには、オプション_Run with highest privileges_をチェックする必要があるようです。

エラーチェック

  • 実際のバッチスクリプトに問題があるが、Windows タスクスケジューラは実際に実行して実行しますが、何らかの理由でバッチスクリプトロジックがエラーになるなどの場合、タスクスケジューラこのレベルではこの失敗が見られない場合があります。その観点から(ほとんどの場合、デフォルトで)、バッチファイルを実行でき、実行するためのアクセス権がある限り、そのジョブは正常に実行されます。

  • エラーチェックまたはロギングをバッチスクリプトロジックに追加して、このレベルでキャッチ(またはトラブルシューティング)の問題を確認します。バッチスケジューラが実行するセキュリティコンテキストが、バッチスクリプトが実行されるコマンドやリソースなどに適切にアクセスできること。


グループポリシーの考慮事項

グループポリシーを確認し、バッチジョブの許可としてログオン

回答:Windowsでは、この特権はローカルまたはドメインセキュリティポリシーを介して付与されます。 ローカルセキュリティポリシーを使用してこれを行うには、次の手順に従います。

  1. コントロールパネルで、管理ツールを開き、次にローカルセキュリティポリシーを開きます。
  2. セキュリティ設定ローカルポリシーを開き、ユーザー権利の割り当てを強調表示します。
  3. 見つけるバッチジョブとしてログオンpropertiesを開き、この権限を必要とするユーザーを追加します。
  4. 終了したら、保存変更を行い、ローカルセキュリティ設定ウィンドウを閉じます。

変更はすぐに有効になります。ドメインセキュリティポリシーを変更するには、ドメインコントローラで、コントロールパネルドメインセキュリティポリシーユーティリティを使用します。


マップされたドライブまたはフルUNCパスを使用したバッチスクリプトロジック、および問題。 。 。

スクリプトがマップされたネットワークドライブを参照しているが、それを_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

enter image description here

Print Screen B

enter image description here

Print Screen C

enter image description here

3
Pimp Juice IT