我正在尝试编写一个脚本,删除超过60天的所有文件夹,并在删除文件夹的目录中创建一个包含文件夹名称的日志文件。
我现在拥有的是:
Get-ChildItem -Directory -Path "\\share\dir1\dir2" |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-10) } |
Remove-Item -Force -Recurse | Out-File Auto_Clean.log -Append -WhatIf
输出保持这样年龄:
What if: Performing the operation "Output to File" on target "C:\users\bgijbels\Downloads\Auto_Clean.log".
当我删除 Out-File 的部分时,它可以正常工作。看起来Out-File部分试图将文件夹中每个文件的名称写入日志,而我只需要拥有文件夹名称。我认为这就是为什么它花了这么长时间,如果它完全超出了创建日志文件的部分。有任何想法吗?谢谢你的帮助。
答案 0 :(得分:1)
您将获得所有文件的列表,因为 -Recurse 开关会枚举文件夹的内容,以便在删除根文件夹之前将其删除。试试这个:
Get-ChildItem -Directory -Path "\\share\dir1\dir2" |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-60) } | % {
$folder = $_;
Remove-Item $folder.FullName -Force -Recurse | Out-Null
$folder.FullName } |
Out-File Auto_Clean.log -Append -WhatIf
目录对象保留为$folder
var,您可以在删除后有效地回显其完整路径。显然,在对结果感到满意之后,请-WhatIf
结束。