2016-07-03 9 views
2

私の勤務先以外のネットワーク上のコンピュータから電子メールを受信します。電子メールは、それらのマシン上のジョブの成功または失敗を示します。私は毎日、それらの電子メールをチェックするスクリプトを作成し、特定のマシンから聞かれなかったり、失敗した場合に通知を受け取ります。特定の曜日にpowershellスクリプトを実行するかどうかを確認するには

すべてのマシンで毎日ジョブが実行されるわけではありません。そのため、スケジュールされていないジョブは実行されなかったという通知を受け取ります。私は、聞き取ることが予想されるすべてのマシンの名前を含む設定ファイルを持っており、必要に応じてマシンを追加または削除します。

私の質問 マシンが特定の曜日にタスクを実行しているかどうかを確認する良い方法は何ですか?私は電子メールを受信するマシンにローカルにしたい。

答えて

2

私は自分の設定を変更し、マシンDaysOfWeekをcontaingオブジェクトのリストを格納します。例:

$configurations = @(
    [PSCustomObject]@{ 
     Machine = 'M01' 
     DaysOfWeek = [DayOfWeek]::Monday, [DayOfWeek]::Tuesday, [DayOfWeek]::Wednesday 
    } 

    [PSCustomObject]@{ 
     Machine = 'M02' 
     DaysOfWeek = [DayOfWeek]::Sunday 
    } 
) 

今、あなたは現在のDayOfWeekを取得し、今日のジョブを実行するすべてのマシンをフィルタリングすることができます。

$configurations | Where { (Get-Date).DayOfWeek -in $_.DaysOfWeek } | Foreach { 
    # Do your stuff here 
} 

あなたはまた、csvから/として設定を保存して読むことができました。

+0

カスタムロジックを出力することは、スクリプトロジックを改善する最も簡単な方法です。 – user4317867

+1

実際に曜日がSystem.Object []の代わりにCSVに出力されるように、DaysofWeekを-joinを含むように変更しなければなりませんでした – dblginca

関連する問題