如何将PowerShell获取指定日期文件的脚本结果输出到日志文件?
如何将PowerShell脚本结果输出到日志文件
下面是几种实用方式,帮你把脚本执行结果写入日志文件:
1. 用重定向符号快速输出
这是最简便的方式,>会覆盖原有日志内容,>>则是追加内容:
$date = "12/31/2016" Get-ChildItem T:\ -Recurse | Where-Object {$_.LastWriteTime -le [DateTime]$date} > C:\Logs\Old_Files.log
如果不想覆盖之前的日志,换成>>即可:
$date = "12/31/2016" Get-ChildItem T:\ -Recurse | Where-Object {$_.LastWriteTime -le [DateTime]$date} >> C:\Logs\Old_Files.log
2. 用Out-File精细控制输出
Out-File支持编码、输出宽度等参数,适合需要调整日志格式或避免乱码的场景:
$date = "12/31/2016" Get-ChildItem T:\ -Recurse | Where-Object {$_.LastWriteTime -le [DateTime]$date} | Out-File -FilePath "C:\Logs\Old_Files.log" -Encoding UTF8 -Force
-Encoding UTF8:确保日志用UTF8编码,防止中文或特殊字符乱码-Force:自动创建日志所在的目录(前提是你有对应权限)
3. 记录完整执行过程(含错误信息)
如果需要排查脚本执行中的问题(比如某些文件夹访问被拒绝),可以用Start-Transcript记录整个控制台输出:
Start-Transcript -Path "C:\Logs\File_Scan_Log.log" -Append $date = "12/31/2016" Get-ChildItem T:\ -Recurse | Where-Object {$_.LastWriteTime -le [DateTime]$date} Stop-Transcript
这种方式会把脚本运行时的所有输出(包括错误提示)都写入日志,方便调试。
额外优化:避免日期解析问题
不同系统区域设置可能导致日期字符串解析错误,建议用明确的格式转换:
$date = [DateTime]::ParseExact("2016-12-31", "yyyy-MM-dd", $null) Get-ChildItem T:\ -Recurse | Where-Object {$_.LastWriteTime -le $date} | Out-File "C:\Logs\Old_Files.log"
内容的提问来源于stack exchange,提问作者Junior Vasquez
相关产品推荐
相关产品推荐

