web-dev-qa-db-ja.com

タスクスケジューラ-バッチ「ユーザーがログオンしているかどうかにかかわらず実行」が機能しない

同じ名前のジョブがある場合、ローカルシステムでWindowsTask Schedulerジョブ(SampleJob)を無効にするバッチファイル(EnableDisable.bat)を作成しました(SampleJob)はすでに有効になっており、別のリモートシステムで実行されています。

Run whether user is logged on or notと一緒にRun with Highest privilegesオプションをオンにしてジョブをセットアップすると、ジョブが機能せず、理由を特定するのが難しく、トラブルシューティングの方法がわからないようです。


バッチファイル

for /f "tokens=1" %%j in ('schtasks /Query /S [servername] /TN "SampleJob" /NH ^| findstr "Ready ^| Running"') do schtasks /Change /Disable /TN "%%j"

注:リモートシステムは[servername]と呼ばれ、必要に応じて実際のリモートサーバー名に置き換えられます。


Windowsタスクスケジューラのジョブ構成

  • このバッチファイルは、Windowsタスクスケジューラジョブとして構成されています
    • 名前EnableDisableJob
    • セキュリティオプションRun whether user is logged on or not
      • Run with Highest privileges

観察

Run only when user is logged onを使用してジョブを実行すると、問題なく動作するようです。ただし、別のオプションで実行しようとすると、そのアカウントがログオンしていないため、実行できない場合があります。


質問

この種の問題のトラブルシューティングを行う方法と、そのプロセスをどこから始めればよいですか?

2
t_venuga

ここでこれをトラブルシューティングするには、いくつかのものがあります

  1. User1アカウントを使用してこのプロセスを実行するマシンからログオフし、User2アカウントとしてマシンにログオンして、User2のプロファイルが作成されていることを確認します。したがって、C:\Users\User2フォルダーが存在するはずです。
  2. そのマシンにUser2としてログオンしている間に、スケジュールされたタスクを実行するか、少なくともRun only when user is logged onRun with highest privilegesでテストすると、実行時にコマンドプロンプトウィンドウがポップアップ表示され、エラーが表示されます。など、Run whether user is logged on or notオプションを付けて実行すると思いません。 「アクセスが拒否されました」エラーまたはそのような性質が表示される場合は、権限の問題があります。

権限の問題

Run whether user is logged on or notおよびRun with highest privilegesを使用してTask Schedulerスケジュールされたジョブを実行するユーザーアカウントがアクセスできるようにする必要があります。 。 。

  1. タスクを実行するマシンからコマンドプロンプト(cmd.exe)を実行する
  2. タスクを実行するマシンからschtasksを実行します
  3. タスクを実行するリモートサーバーに対してschtasksをリモートで実行する

その他のアイテム

  1. User2アカウントを、タスクを実行するマシンのローカル管理者に一時的に設定してからログオフし、マシンに戻って、ローカルマシンの権限の問題を除外することを再試行します。

  2. セキュリティの違いを、リモートマシン、ドメインセキュリティグループなどのUser1およびUser2と比較します。


その他のリソース

0
Pimp Juice IT

上記のPimp Juice ITからの提案はすべて素晴らしいものです。ここでもう1つ説明します。

タスクを実行しているユーザーアカウントにLog on as batch jobユーザー権限。これがMSからのドキュメントです: link

これをローカルセキュリティポリシーから設定する方法のリンクは次のとおりです。 link

GPOを介してこれを行うこともできます。

もちろん、Pimp Juice ITが示唆したように、ユーザーが既にローカル管理者である場合は、この権利をすでに持っている可能性があります。

0
Adilio