我需要针对目录中自动创建和清除的文件运行脚本。
我使用了这里的脚本: http://www.experts-exchange.com/Programming/Languages/Scripting/Powershell/Q_26895555.html
此脚本的问题在于,无论是否发现任何违规文件,都会发送电子邮件。
此外,它还会检测旧文件并发送电子邮件,但是当需要再次检查时,它不会再次报告该文件。
我想将此作为计划任务运行(我知道该怎么做),但我希望它只发送电子邮件,如果它找到有问题的文件,我希望它每次检查时都会报告违规者。
感谢您的帮助。
答案 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