アプリケーションの一部として PowerShell を使用してスケジュールされたジョブを作成するスクリプトがいくつかあります。最近それらをテストしたとき、それらのいくつかは常にすぐに失敗し、出力が生成されないことに気付きました (それらはGet-Job
リストにも表示されません)。
何日にもわたる微調整の後、毎週実行するように設定されているすべてのジョブにそれを分離することができました。以下は、まったく同じことを行う 2 つのジョブを作成するスクリプトです。これをドメインで実行し、ドメイン ユーザーの資格情報を提供してから、タスク スケジューラ GUI で両方のジョブを強制的に実行すると (右クリック -> [実行])、毎日のジョブは正常に実行され (0x0 結果)、毎週のジョブは失敗します。 (0x41306)。
注: -Credential パラメータを指定しない場合、両方のジョブが正常に機能します。タスクが毎週実行され、このドメイン ユーザーとして実行されている場合にのみ、ジョブは失敗します。
なぜこれが起こっているのかについての情報を見つけることも、毎週の仕事で異なる動作をする理由についても考えられません. タスク スケジューラの [履歴] タブには有用な情報がほとんどなく、「ユーザーの要求によりタスクが停止しています」と「タスクが終了しました」だけで、どちらにも有用な情報はありません。
タスク スケジューラは、「\Microsoft\Windows\PowerShell\ScheduledJobs\Test1」タスクの「{eabba479-f8fc-4f0e-bf5e-053dfbfe9f62}」インスタンスを終了しました。タスク スケジューラは、ユーザー "MyDomain\SomeUser" による要求として、タスク "\Microsoft\Windows\PowerShell\ScheduledJobs\Test1" のインスタンス "{eabba479-f8fc-4f0e-bf5e-053dfbfe9f62}" を停止しました。
これどうしたの?毎週のタスクの実行方法が異なるのはなぜですか? また、この問題をどのように診断できますか?
これは、Windows Server 2008 R2 上の PowerShell v3 です。これをローカルで再現することはできませんでしたが、本番ドメインと同じようにユーザーを設定していません (私はこれに取り組んでいますが、誰かが何が起こっているか知っています!)。
Import-Module PSScheduledJob
$Action =
{
"Executing job!"
}
$cred = Get-Credential "MyDomain\SomeUser"
# Remove previous versions (to allow re-running this script)
Get-ScheduledJob Test1 | Unregister-ScheduledJob
Get-ScheduledJob Test2 | Unregister-ScheduledJob
# Create two identical jobs, with different triggers
Register-ScheduledJob "Test1" -ScriptBlock $Action -Credential $cred -Trigger (New-JobTrigger -Weekly -At 1:25am -DaysOfWeek Sunday)
Register-ScheduledJob "Test2" -ScriptBlock $Action -Credential $cred -Trigger (New-JobTrigger -Daily -At 1:25am)
編集:snoverの提案に従ってConnectに追加:
編集: Jeff Hicks からの追加情報
あなたのコードを使用して、PS v3 を実行している 2008 R2 ボックスで同じジョブを作成しました。どちらのジョブも、Start-Job を使用して PowerShell から正常に実行されました。しかし、GUI では、毎週のジョブで同じエラーが発生しました。
Windows 8 でも同じ結果が得られます。何かがタスク サービスに中止を指示しています。他の設定をいくつかテストしましたが、効果はありませんでした。考えられるすべてのログを調べたところ、ジョブの開始、PowerShell の読み込み、タスク スケジューラのキャンセルが表示されます。
少し前に毎週のタスクを今日実行するようにリセットしましたが、それでも失敗しました。また、PowerShell 以外のことを行う毎週のタスクをテストしたところ、問題なく実行されました。
現在のユーザーと同じアカウントを使用するように毎週のジョブを変更したところ、問題なく実行されました。他のアカウントに戻しましたが、再び失敗しました。トリガーとアカウントの相関関係についてはわかりません。