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

Windows10环境下PowerShell5.1搜索备份zip文件报错如何解决

问题根源
  1. 第一次报错是原始代码笔误:Get-ChildItem -Path -$filePath中$filePath前多了多余的减号,拼接后路径变成-M:\BACKUPS\,PowerShell误将-M识别为驱动器名,触发找不到驱动器的错误。
  2. 第二次报错是修改逻辑错误:你移除了-Path参数名,同时保留了原有的$filePath变量,导致Get-ChildItem接收到两个无标记的路径参数,后续的*.zip找不到对应参数位,触发参数绑定错误。
  3. 原始代码还有两处隐性问题:
    • 结果写入CSV的行语法错误,>> $RemotePath = M:\BACKUPS\FOUND\ZIPMATCH.csv不符合PowerShell语法规则
    • 手动拼接CSV字符串的方式,遇到文件名包含逗号等特殊符号时会导致CSV格式错乱
修复后完整代码
# 配置项,可按需修改
$filePath = "M:\BACKUPS\"
$searchTerms = @("YOMoma")
$outputCsvPath = "M:\BACKUPS\FOUND\ZIPMATCH.csv"

# 自动创建输出目录
$outputDir = Split-Path $outputCsvPath -Parent
if (-not (Test-Path $outputDir)) {
    New-Item -ItemType Directory -Path $outputDir | Out-Null
}

function openZip($zipFile){
    try{
        [Reflection.Assembly]::LoadWithPartialName("System.IO.Compression.FileSystem") | Out-Null
        $zipContens = [System.IO.Compression.ZipFile]::OpenRead($zipFile)
        $zipContens.Entries | ForEach-Object {
            foreach($searchTerm in $searchTerms){
                if ($_.Name -imatch $searchTerm){
                    # 输出结构化对象,方便后续导出CSV
                    [PSCustomObject]@{
                        FileName = $_.Name
                        FullPathInZip = $_.FullName
                        CompressedLength = $_.CompressedLength
                        LastWriteTime = $_.LastWriteTime
                        OriginalLength = $_.Length
                        SourceZipFile = $zipFile
                    }
                }
            }              
        }
        $zipContens.Dispose()
    }
    catch{
        Write-Output ("Error processing $zipFile : " + $_.Exception.Message)
    }
}  

Write-Host "Search path: " $filePath
Write-Host "Search terms: " ($searchTerms -join ", ")

# 遍历所有zip文件搜索,结果直接导出为CSV
Get-ChildItem -Path $filePath -Filter *.zip -Recurse | ForEach-Object {
    openZip $_.FullName
} | Export-Csv -Path $outputCsvPath -NoTypeInformation -Encoding UTF8
使用说明
  • 需要修改搜索关键词直接修改$searchTerms数组即可,支持同时传入多个关键词,比如@("YOMoma", "报销单", "2024项目")
  • 代码兼容PowerShell 5.1版本,无需额外权限
  • 最终匹配结果会包含来源zip包路径,方便你定位文件所在的备份包

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 10:24:05