目标是删除超过x天的文件。用于测试使用副本。 找到了关于如何做到这一点的几篇文章 - 但是我遇到的问题是,无论使用哪个属性变量和比较ALL文件都被移动(复制)。其次,尝试将结果传递给日志文件将创建文件但不写入文件。我错过了一些但看不到的东西。我对错误的任何意见表示赞赏!
$SDirectory = "C:\TestOne*"
$Destpath = "C:\TestTwo"
$limit = (Get-Date).Date.AddDays(-2)
$Full = Get-childitem -path $SDirectory -Recurse -Include *.bak,*.trn
foreach ($i in $Full)
{
##if ($i.CreationTime -gt ($(Get-Date).adddays(-2)))
if ($i.LastWriteTimeUtc -gt $limit)
{
Copy-Item -Path $Full -Destination $Destpath -Force | Out-File C:\Admin\Results11.txt -Append
}
}
答案 0 :(得分:1)
复制所有文件的原因是因为您实际复制了它们:
Copy-Item -Path $Full ...
我想你想要更像这样的东西:
Copy-Item -Path $($i.FullName) ...
要捕获输出,请使用-PassThru
:
Copy-Item -Path $($i.FullName) -Destination $Destpath -PassThru -Force | Out-File C:\Admin\Results11.txt -Append
答案 1 :(得分:0)
这就是我提出的:
$SDirectory = "C:\TestOne*"
$Destpath = "C:\TestTwo"
$limit = (Get-Date).Date.AddDays(-2)
$files = Get-ChildItem -Path "$SDirectory" | % {
if ($_.CreationTime -gt $limit) {
Copy-Item -Path $_.FullName "$Destpath"
Add-Content "C:\Admin\Results11.txt" -Value $_.Name
}
}