如果文件超过30分钟,则创建PowerShell脚本以发送电子邮件

时间:2014-01-08 18:19:09

标签: powershell scripting

我需要针对目录中自动创建和清除的文件运行脚本。

我使用了这里的脚本: http://www.experts-exchange.com/Programming/Languages/Scripting/Powershell/Q_26895555.html

此脚本的问题在于,无论是否发现任何违规文件,都会发送电子邮件。

此外,它还会检测旧文件并发送电子邮件,但是当需要再次检查时,它不会再次报告该文件。

我想将此作为计划任务运行(我知道该怎么做),但我希望它只发送电子邮件,如果它找到有问题的文件,我希望它每次检查时都会报告违规者。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

单行答案看起来像这样:

Get-ChildItem -Path c:\test | Where-Object -FilterScript { ([DateTime]::Now - $_.LastWriteTime).TotalMinutes -ge 30; } | ForEach-Object -Begin { $FileList = @(); } -Process { $FileList += $_.Name; } -End { Send-MailMessage -Body $FileList ... ... ... ...; };

-End cmdlet的ScriptBlock ForEach-Object中,您可以调用Send-MailMessage命令,并传入$FileList变量,该变量将在-Process的{​​{1}} ScriptBlock。总的来说,这变成了一个相当冗长的单行命令,所以我们可以将其分解以使其更容易理解,并为电子邮件定义一个更漂亮,更漂亮的消息体。

这是一个更长的答案,将其分解成碎片:

ForEach-Object
相关问题