Logging 压缩Powershell中按日期筛选的日志文件

Logging 压缩Powershell中按日期筛选的日志文件,logging,scripting,powershell,zip,Logging,Scripting,Powershell,Zip,在\\server\logs下有一个子目录树,其中包含未遵循一致文件命名约定的归档日志文件。我想运行一个每日计划任务,将90天或更早的非压缩文件压缩为每日压缩文件。我希望在每个zip中维护目录树结构和文件名 在Powershell中实现这一点的最佳方法是什么 编辑:除非有更好的方法,否则我认为zip文件应该在\\server\oldlogs中创建,并以特定的日期命名,例如\\server\oldlogs\20110630\u logs.zip。上次修改超过90天前的\\server\logs下的

\\server\logs
下有一个子目录树,其中包含未遵循一致文件命名约定的归档日志文件。我想运行一个每日计划任务,将90天或更早的非压缩文件压缩为每日压缩文件。我希望在每个zip中维护目录树结构和文件名

在Powershell中实现这一点的最佳方法是什么

编辑:除非有更好的方法,否则我认为zip文件应该在
\\server\oldlogs
中创建,并以特定的日期命名,例如
\\server\oldlogs\20110630\u logs.zip
。上次修改超过90天前的
\\server\logs
下的所有文件都应添加到相应的
.zip
文件中。

这里有一个66%的解决方案(午餐结束了)。我无法使本机zip与PowerShell一起工作,但如果您安装了PowerShell社区扩展,则更换zip调用应该很快


我将看看是否可以在以后处理它,以使zip按预期工作。

从.NET 3开始,System.IO.Packaging.ZipPackage可以进行压缩。中没有子文件夹,但可以处理它们

日期过滤器可以是这样的:

$ninetyDaysAgo = (get-date).adddays(-90)
$Files | where {$_.lastWriteTime -lt $ninetyDaysAgo}

在\\server\logs下有子目录。这些子目录将包含不以.zip结尾的文件。该过程应该识别过去90天内没有(创建/修改/访问?)的所有文件,并将它们放入现有目录结构中的.zip中。创建存档文件后,应删除这些相同的文件。准确吗?@billinkc-现在您已经提到了,在
\\server\oldlogs
目录中创建拉链似乎更简单。我希望以一天命名的zip文件结束,其中包含上次在该日期修改的文件。然后是的,一旦它们被压缩,它们应该被删除。我会更新这个问题。谢谢。你为什么用powershell标签?。您需要对问题或功能脚本发表意见吗?@Voodoomr-因为我在Powershell中询问了解决此问题的最佳方法。谢谢,这很有趣。但这并不完全正确,因为所有超过90天的文件都会添加到同一个zip文件中,而不是添加到与其上次写入日期对应的zip文件中。我想我可以修改一下。另外,ZipIt应该添加完全限定路径吗?
$ninetyDaysAgo = (get-date).adddays(-90)
$Files | where {$_.lastWriteTime -lt $ninetyDaysAgo}