Powershell Remove-Item获取Loggingfile

时间:2018-10-12 10:54:58

标签: powershell logging

我可能已经搜索了整个网络,但是我无法自救。否则,我无能为力。 我只想在30天后删除文件夹,然后将结果显示在一个简单的.log文件中。

dir "C:\Users\sam\Desktop\Files_todelete\*" -ErrorAction SilentlyContinue | Where { ((Get-Date) - $_.LastWriteTime).days -gt 30 } | Remove-Item -Recurse 

这对我有用,但是我几乎尝试了所有方法来记录结果。 希望您能帮助我解决此问题。

2 个答案:

答案 0 :(得分:1)

您需要将部分日志记录到脚本中。您可以为每个需要删除的项目创建foreach loop,并将活动记录到日志文件中。这是一个示例:

$LogFile = 'C:\log.txt'
dir "C:\Users\sam\Desktop\Files_todelete\*" -ErrorAction SilentlyContinue | 
    Where { ((Get-Date) - $_.LastWriteTime).days -gt 30 } | 
        ForEach-Object {
            Remove-Item $_.FullName -Recurse
            Out-File -InputObject $('Removed {0}' -f $_.FullName) -FilePath $LogFile -Append
        }

答案 1 :(得分:0)

因此,在这种情况下,它对我有用,但我想将脚本用于网络驱动器。如果我编辑路径,一切似乎都很好。但是这里的问题是许可。因此,我找到了使用Get-ChildItem -Directory的解决方案。 我的问题是可以在Remove-Item命令之前使用此管道吗?

赞:

$ LogFile ='\ netshare \ folder \ log.txt'

dir“ \ netshare \ Files_todelete *” -ErrorAction静默继续

其中{(((Get-Date)-$ _。LastWriteTime).days -gt 30})|

ForEach-Object {

Get-ChildItem -Directory | Remove-Item $_.FullName -Recurse
        Out-File -InputObject $('Removed {0}' -f $_.FullName) -FilePath $LogFile -Append
    } 

逻辑上,Get-ChildItem是否需要位于循环的前面?!但是我不太想正确地编辑循环的开始。