2016-07-03 12 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

CustomObject를 출력하는 것이 스크립트 논리를 향상시키는 가장 쉬운 방법입니다. – user4317867

+1

작동하도록했습니다. 주 요일이 System.Object [] 대신 CSV로 출력되도록 DaysofWeek을 -join을 포함하도록 변경해야했습니다. – dblginca

관련 문제