簡體   English   中英

Powershell Remove-Item獲取Loggingfile

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM