'PowerShell: How to copy only ".exe" file from ZIP folder to another folder

I have a "ZIP" file and when we extract this, we have 1 "EXE" file within 4-5 sub folder depth level.

I would like to grab that "EXE" file and copy into another folder. How to do it using PowerShell?

I tried below, but it will copy all the ZIP content,

 $shell = New-Object -ComObject shell.application
 $zip = $shell.NameSpace("Source Path")
 foreach ($item in $zip.items()) {
   $shell.Namespace("Destination Path").CopyHere($item)
} 


Solution 1:[1]

As it stands, Clint's answer did not work for me, but something based on Extract Specific Files from ZIP Archive does, with a variation to target a specifically named file. Will need a further tweak to handle multiple files sharing the same name.

Code:

# Set source zip path, target output directory and file name filter

$ZipPath = 'C:\temp\Test.zip'
$OutDir = 'C:\temp'
$Filter = 'MyExe.exe'

# Load compression methods
Add-Type -AssemblyName System.IO.Compression.FileSystem

# Open zip file for reading
$Zip = [System.IO.Compression.ZipFile]::OpenRead($Path)

# Copy selected items to the target directory
$Zip.Entries | 
    Where-Object { $_.FullName -eq $Filter } | 
    ForEach-Object { 
        # Extract the selected items from the zip archive
        # and copy them to the out folder
        $FileName = $_.Name
        [System.IO.Compression.ZipFileExtensions]::ExtractToFile($_, "$OutDir\$FileName", $true)
    }

# Close zip file
$Zip.Dispose()

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Colin Frame