如何检查powershell脚本是否应该在一周的特定日期运行

时间:2016-07-03 18:22:50

标签: powershell

我从与我无关的网络上的计算机上收到电子邮件。电子邮件表明这些机器上的作业成功或失败。我创建了一个脚本,每天检查这些电子邮件,然后如果我没有收到来自特定计算机的消息或者作业失败,我会收到通知。

并非所有计算机每天都运行这些作业,因此我收到通知,指出作业未在计划运行时未运行。我有一个配置文件,其中包含我希望收到的所有计算机的名称,并根据需要添加或删除计算机。

我的问题, 检查机器是否在一周中的特定日期运行任务的好方法是什么。我想将它保存在接收电子邮件的机器本地。

1 个答案:

答案 0 :(得分:2)

我会更改配置并存储包含计算机 DaysOfWeek 的对象列表。示例:

$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