<p>Voici une méthode simple utilisant <a href="https://learn.microsoft.com/en-us/dotnet/api/system.io.compression.zipfile.extracttodirectory?view=netframework-4.5">ExtractToDirectory</a> de <a href="https://learn.microsoft.com/en-us/dotnet/api/system.io.compression.zipfile?view=netframework-4.5">System.IO.Compression.ZipFile</a> :</p>
<pre><code class="lang-auto">Add-Type -AssemblyName System.IO.Compression.FileSystem
function Unzip
{
param([string]$zipfile, [string]$outpath)
[System.IO.Compression.ZipFile]::ExtractToDirectory($zipfile, $outpath)
}
Unzip "C:\a.zip" "C:\a"
</code></pre>
<p>Notez que si le dossier cible n’existe pas, ExtractToDirectory le créera. Autres mises en garde :</p>
<ul>
<li>
<p>Les fichiers existants ne seront pas écrasés et déclencheront plutôt une IOException.</p>
</li>
<li>
<p>Cette méthode nécessite au minimum .NET Framework 4.5, disponible pour Windows Vista et versions ultérieures.</p>
</li>
<li>
<p>Les chemins relatifs ne sont pas résolus en fonction du répertoire de travail actuel, voir <a href="https://stackoverflow.com/questions/11246068/why-dont-net-objects-in-powershell-use-the-current-directory">Why don’t .NET objects in PowerShell use the current directory?</a></p>
</li>
</ul>
<p>Voir aussi :</p>
<ul>
<li><a href="https://learn.microsoft.com/en-us/dotnet/standard/io/how-to-compress-and-extract-files">How to Compress and Extract files</a> (Microsoft Docs)</li>
</ul>