You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell的ForEach循环中实现-verbose归档日志输出?

解决PowerShell脚本中7-Zip归档操作的Verbose日志问题

我来帮你搞定这个7-Zip归档的verbose输出问题!你的脚本目前删除文件有清晰的verbose反馈,但归档操作的状态被屏蔽了,而且没有主动记录归档成功的日志。咱们一步步调整:

核心问题分析

你当前的7-Zip调用后面加了| Out-Null,这直接把7z的命令行输出全部屏蔽;另外脚本里也没有主动输出归档操作的状态信息,所以看不到归档的详细过程和结果。

修改后的完整脚本

下面是调整后的脚本,我标注了关键改动点:

# start logging of archived files and specify log location for each day
Start-transcript C:\Temp\LogArchiveTesting\Logs\Archived_Server_Logging_$(get-date -format ddMMMyyyy).log
# 启用Verbose输出(如果脚本没通过-Verbose参数调用,这里可以强制开启)
$VerbosePreference = 'Continue'

# set folder path
$log_path = "C:\Temp\LogArchiveTesting\*.*"
$zip_path = "C:\Temp\LogArchiveTesting\Archive\*.7z"
$target_path = "C:\Temp\LogArchiveTesting\Archive\"

# set min age of files
$max_months = "-6"
$delete_max_days = "-365"

# get the current date
$curr_date = Get-Date

# determine how far back we go based on current date
$zip_date = $curr_date.AddMonths($max_months)
$delete_zip_date = $curr_date.AddDays($delete_max_days)

# filter files
Get-ChildItem $log_path | Where-Object { ($_.LastWriteTime -lt $zip_date) -and ($_.psIsContainer -eq $false)}| ForEach-Object {
    $Zip = $target_path + "{0:yyMM}_{0:MMM}Server Logging.7z" -f $_.LastWriteTime
    Write-Verbose "准备归档文件: $($_.FullName) 到压缩包: $Zip"
    
    # 执行7-Zip归档,不再屏蔽输出,保留原生反馈
    & "C:\Program Files\7-Zip\7z.exe" u -mx9 -t7z -m0=lzma2 $Zip $_.FullName
    
    If ($LastExitCode -eq 0) {
        Write-Verbose "归档成功: $($_.FullName) -> $Zip"
        Remove-Item $_.FullName -Verbose
    }
    else {
        Write-Warning "归档失败: $($_.FullName),7-Zip退出代码: $LastExitCode"
    }
}

# 删除旧压缩包,保留Verbose输出
Get-ChildItem $zip_path | Where-Object { $_.LastWriteTime -lt $delete_zip_date } | Remove-Item -Verbose

#Stops logging of archived files
stop-transcript

关键改动说明

  • 启用全局Verbose设置:添加$VerbosePreference = 'Continue',确保即使脚本没加-Verbose参数运行,也能输出verbose日志(如果需要仅在手动指定参数时输出,可以去掉这行,运行脚本时用.\你的脚本名.ps1 -Verbose)。
  • 移除| Out-Null:让7-Zip的原生输出直接显示到控制台和日志里,能看到归档的详细过程(比如添加文件数量、压缩率、进度等)。
  • 添加归档状态日志:用Write-Verbose明确记录“准备归档”和“归档成功”的信息,让日志更直观易读。
  • 新增失败处理:添加Write-Warning输出归档失败的信息,方便后续排查问题。

这样调整后,你的日志文件里就会同时包含7-Zip的原生操作反馈和自定义的归档状态记录,完全满足你追踪归档操作的需求啦!

内容的提问来源于stack exchange,提问作者Matt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 06:31:34