Powershell脚本:列出具有特定更改日期的文件(可能的话,数量)

时间:2018-09-26 07:50:50

标签: windows powershell server

对于许可证文件,我尝试自动进行计数过程,而不必登录到每个服务器,进入目录,搜索文件名并根据更改日期对结果进行计数。

我想要的目标是: 每月运行一个Powershell脚本,以递归方式在目录“ C:\ Users”中检查文件“ Outlook.pst”。然后按更改日期(一个月或更晚)过滤结果。然后将其打包到电子邮件中以发送到我的收件箱。

我不确定这是否可行,因为我对Powershell相当陌生。感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

有可能。

我不知道如何在远程计算机上启动ps会话,但是我认为cmdlet Enter-PSSession可以解决问题。或至少它是搜索“打开远程Powershell会话”时的第一个结果。如果这样不起作用,请按照提示使用Invoke-Command,以获取$ outlookFiles,如下所示。

其余使用此。

$outlookFiles = Get-ChildItem -Path "C:\Users" -Recurse | Where-Object { $_.Name -eq "Outlook.pst" }

现在,所有具有此名称的文件。如果您不熟悉Powershell中的管道,它将使用Get-ChildItem找到的所有对象重定向到下一个管道部分,此处Where-Object将过滤接收到的对象。如果当前对象($ _)将通过条件,则它将由整个命令返回。

现在,您可以再次过滤这些对象,使其仅包含最新的对象。

$latestDate = (Get-Date).AddMonths(-1)
$newFiles = $outlookFiles | Where-Object { $_.LastAccessTime -gt $latestDate }

现在,您在一个对象中拥有了所有想要的数据。现在,您只需要按自己的喜好来格式化它,例如您可以使用$mailBody = $newFiles | Out-String,然后使用Send-MailMessage -To x@y.z -From r@g.b -Body $mailBody发送邮件。