Powershell to search for files based on words / phrase but also Zip files and within zip files

后端 未结 2 1473
栀梦
栀梦 2020-12-21 19:26

I have this script...

Which looks at a given network location and then goes through all the folders / subfolders to search for specific words / phrases. Looking to m

2条回答
  •  时光说笑
    2020-12-21 20:15

    If you have .Net 4.5 installed you can use System.IO.Compression.FileSystem library to create a function which will open and traverse contents of your zip files

    $searchTerms = @( "test","bingo","false","one two","england")
    function openZip($zipFile){
        try{
            [Reflection.Assembly]::LoadWithPartialName( "System.IO.Compression.FileSystem" ) | Out-Null;
            $zipContens = [System.IO.Compression.ZipFile]::OpenRead($zipFile);  
            $zipContens.Entries | % {
                foreach($searchTerm in $searchTerms){
                    if ($_.Name -imatch $searchTerm){
                        Write-Output ($_.Name + "," + $_.FullName + "," + $_.CompressedLength + "," + $_.LastWriteTime + "," + $_.Length);
                    }
                }               
            }
        }
        catch{
            Write-Output ("There was an error:" + $_.Exception.Message);
        }
    }  
    

    You can then run something like this to obtain filename,full path within zip, compressed size etc.

    Get-ChildItem -Path -$filePath *.zip -Recurse -ErrorAction SilentlyContinue | %  {
        openZip $_.FullName  >> c:\path\to\report.csv
        }
    

提交回复
热议问题