PowerShell格式输出

时间:2014-05-06 09:08:16

标签: powershell

我正在尝试编写一个脚本,删除超过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部分试图将文件夹中每个文件的名称写入日志,而我只需要拥有文件夹名称。我认为这就是为什么它花了这么长时间,如果它完全超出了创建日志文件的部分。有任何想法吗?谢谢你的帮助。

1 个答案:

答案 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结束。