powershell - 如何获取powershell日志
问题描述
我有一个 PowerShell 函数,可以删除一段时间内未修改的文件夹。
我想知道如何获取输出/日志.txt
或.csv
文件,以显示哪些文件夹被删除以及何时删除。我已经尝试过Start-Transcript
,但它只会显示错误而不是成功。
$daysToKeep = -15
$foldersToKeep = 3
$Location = "C:\Users\Administrator\Desktop\Batch"
$folderList = Get-ChildItem -Path $Location -Recurse -Directory
$folderList | Sort-Object CreationTime -Descending |
Select-Object -Skip $foldersToKeep |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays($DaysToKeep) } |
Remove-Item -Recurse
解决方案
如果将文件放入循环中,则可以创建具有DeleteTime
属性的自定义对象:
$LogFile = 'C:\temp\FileDeleteLog.csv'
$daysToKeep = -15
$DateBound = (Get-Date).AddDays($daysToKeep)
$foldersToKeep = 3
$Location = "C:\Users\Administrator\Desktop\Batch"
Get-ChildItem -Path $Location -Recurse -Directory |
Sort-Object CreationTime -Descending |
Select-Object -Skip $foldersToKeep |
Where-Object { $_.LastWriteTime -lt $DateBound } |
ForEach-Object{
[PSCustomObject]@{
FolderPath = $_.FullName
LastWriteTime = $_.LastWriteTime
DeleteTime = (Get-Date)
}
Remove-Item $_.FullName -Recurse
} |
Export-Csv -Path $LogFile -NoTypeInformation
我可以想象有很多方法可以做到这一点,这只是其中一种。我们本可以Select-Object
在现有管道中添加时间戳。但是,如果该过程需要很长时间,您可能会在这些时间戳与实际删除文件夹的时间之间产生不可接受的间隙。现在,我认为上面会更准确。
推荐阅读
- c++ - Visual Studio 2017 和 codeblock17.12 中的 ctime 有区别吗?
- python - python中使用差分进化的分段回归
- ios - Facebook 和 Google OAuth 在使用 testflight 进行测试时工作正常,但在应用程序经过审核以供发布时却无法正常工作
- java - 休眠忽略自动提交错误设置。而是创建本地连接
- azure-pipelines - 在天蓝色管道中显示灯塔结果并在某些灯塔条件下构建失败
- console - Spring Tool Suite 4 控制台颜色问题
- python - 如何在python中读取条形码?
- javascript - 开玩笑清理 Express 服务器设置
- apache - Apache2 将 https://www 重定向到 https://non-www
- vba - 我想通过 VBA 将所有突出显示和阴影的文本从 Word 文件连同颜色一起复制到 Excel