[英]Powershell Remove-Item get Loggingfile
我可能已經搜索了整個網絡,但無法幫助自己。 否則,我無能為力。 我只想在30天后刪除文件夾,然后將結果顯示在一個簡單的.log文件中。
dir "C:\Users\sam\Desktop\Files_todelete\*" -ErrorAction SilentlyContinue | Where { ((Get-Date) - $_.LastWriteTime).days -gt 30 } | Remove-Item -Recurse
這對我有用,但是我幾乎嘗試了所有方法來記錄結果。 希望您能幫助我解決此問題。
您需要將部分日志記錄到腳本中。 您可以為每個需要刪除的項目創建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
}
因此,在這種情況下,它對我有用,但是我想將腳本用於網絡驅動器。 如果我編輯路徑,一切似乎都很好。 但是這里的問題是許可。 因此,我找到了使用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是否需要位於循環的前面?! 但是我不是很想正確地編輯循環的開始。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.