0

Office 365 のクラウドへのメールボックスの移動を実行するスクリプトをいくつか取得しました。スクリプトは時々失敗し、他のスクリプトは失敗しません。失敗する理由についての手がかりはありませんが、タスクが実行されたときにサービスが利用できないためだと思います。とにかく、ポイントは、これらのスクリプトがスケジュールされたタスクとして実行され、1 つが他のタスクの前に実行される必要があることです。最初のタスクが失敗したかどうかを検出し、失敗した場合は 2 番目のタスクを再スケジュールする方法です。

タスクは Windows 2008 r2 で powershell v2 コマンドレットを実行しているため、タスク スケジューラを使用しています。

次のように、いくつかのエントリをテキスト ファイルに保存するか、別のタスク スケジューラを使用するか、powershell を使用して各ジョブを実行するかを考えます。

foreach ($script in $scripts)
{
    #check status in a text file
    $job = start-job -Filepath c:\myscript.ps1 -AsJob
    Wait-Job $job -Timeout 180
}

最善のアプローチは何ですか?

ありがとう、

4

1 に答える 1

0

schtasks.exeを使用して、タスクのクエリ/有効化または再スケジュールを行うことができます。または、スケジューラのCOMオブジェクトを使用できます(schtasksの出力は言語に依存することに注意してください)。1つまたは他のメソッドを使用して、lastTaskResultを確認し、他のタスクを再スケジュールするかどうかを指定します。

例:

COMオブジェクトを使用してルートフォルダのすべてのタスクを取得します

icm -AsJob -JobName getTasks -ComputerName $computername  -ScriptBlock{
    $Schedule = new-object -com("Schedule.Service")
    $Schedule.connect($env:computername)
    $Tasks = $Schedule.getfolder("\").gettasks(0)
    $Tasks | Select-Object  Name,Path,State,Enabled,LastRunTime,LastTaskResult 
    }

schtasksで特定のタスクを取得する

schtasks /query /TN "\Microsoft\Windows\Autochk\Proxy" /v /fo csv  |ConvertFrom-Csv
于 2012-12-17T06:39:45.170 に答える