带powershell的RotateLog

带powershell的RotateLog,powershell,logrotate,Powershell,Logrotate,我不熟悉脚本和Powershell,我正在尝试创建一个脚本,每天只保存最后3天的日志文件 function RotateLog { $dir="C:\Users\user1\Documents\Project\LOG" $DayMax= -3 $CurrentDate= Get-Date -uformat "%d-%m-%Y-%H%M" $DatetoDelete= (get-date -UFormat "%d-%m-%Y-%H%M").AddDays($DayMax) get-childit

我不熟悉脚本和Powershell,我正在尝试创建一个脚本,每天只保存最后3天的日志文件

function RotateLog {
$dir="C:\Users\user1\Documents\Project\LOG"
$DayMax= -3
$CurrentDate= Get-Date -uformat "%d-%m-%Y-%H%M"
$DatetoDelete= (get-date -UFormat "%d-%m-%Y-%H%M").AddDays($DayMax)

get-childitem -path $dir -filter "YYYY-mm-dd-*.LOG"
foreach-object {
if ($_.LastWriteTime -lt $DatetoDelete)
{remove-item}
}
}
当我运行$DatetoDelete时,它返回失败,因为[System.String]不包含名为“AddDays”的方法

所以我试着用

$dtt=(get-date).AddDays($DayMax)
它是这样工作的,但我需要得到格式。 我怎么做

另一个问题是,当我运行命令
remove item
时,它会在命令管道位置1返回cmdlet remove item 为以下参数提供值:路径[0]
这意味着什么?

参数
-Format
-UFormat
使
获取日期
输出相应
[datetime]
对象的字符串表示,而“向字符串添加-3天”没有多大意义

使用不带格式参数的
Get Date
来获取可以进行有意义的修改和比较的
[datetime]
对象:

#将当前日期和时间作为[datetime]对象获取
$CurrentDate=获取日期
#这里我引用了DateTime对象上的'Date'属性
#这给了我们相同的日期,但在当地时间00:00
$DateToDelete=$CurrentDate.Date.AddDays($DayMax)

现在,
$\uLastWriteTime-lt$DatetoDelete
更有意义,因为我们将
[datetime]
[datetime]
进行比较,而不是与格式化字符串进行比较,使用
[datetime]
对象。。。切勿将其转换为日期时间字符串,用于显示以外的任何内容。