Expand-Archive

Extracts files from a specified ZIP archive file.

Syntax

Expand-Archive
      [-Path] <String>
      [[-DestinationPath] <String>]
      [-Force]
      [-PassThru]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Expand-Archive
      -LiteralPath <String>
      [[-DestinationPath] <String>]
      [-Force]
      [-PassThru]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]

Description

The Expand-Archive cmdlet extracts files from a specified zipped archive file to a specified destination folder. An archive file allows multiple files to be packaged, and optionally compressed, into a single zipped file for easier distribution and storage.

The Expand-Archive cmdlet uses the System.IO.Compression.ZipArchive API to compress files. The API limits the maximum file size to 2GB. The .NET API works with files that conform to the official ZIP file format specification by PKWARE Inc. For more information, see System.IO.Compression.ZipArchive.

Examples

Example 1: Extract the contents of an archive

This example extracts the contents of an existing archive file into the folder specified by the DestinationPath parameter.

Expand-Archive -LiteralPath 'C:\Archives\Draft[v1].zip' -DestinationPath C:\Reference

In this example, the LiteralPath parameter is used because the filename contains characters that could be interpreted as wildcards.

Example 2: Extract the contents of an archive in the current folder

This example extracts the contents of an existing archive file in the current folder into the folder specified by the DestinationPath parameter.

Expand-Archive -Path Draftv2.zip -DestinationPath C:\Reference

Parameters

-Confirm

Prompts you for confirmation before running the cmdlet.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DestinationPath

By default, Expand-Archive creates a folder in the current location that's the same name as the ZIP file. The parameter allows you to specify the path to a different folder. The target folder is created if it doesn't exist.

Type:String
Position:1
Default value:A folder in the current location
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Force

Use this parameter to overwrite existing files. By default, Expand-Archive doesn't overwrite.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-LiteralPath

Specifies the path to an archive file. Unlike the Path parameter, the value of LiteralPath is used exactly as it's typed. Wildcard characters aren't supported. If the path includes escape characters, enclose each escape character in single quotation marks, to instruct PowerShell not to interpret any characters as escape sequences.

Type:String
Aliases:PSPath
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-PassThru

Causes the cmdlet to output a list of the files expanded from the archive.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Path

Specifies the path to the archive file.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-WhatIf

Shows what would happen if the cmdlet runs. The cmdlet isn't run.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Inputs

String

You can pipe a string that contains a path to an existing archive file.

Outputs

None

By default, this cmdlet returns no output.

FileSystemInfo

When you use the PassThru parameter, this cmdlet returns a list of files that were expanded from the archive.

Notes

The Compress-Archive cmdlet uses UTF-8 encoding. Other ZIP archive tools may use a different encoding scheme. When extracting files with filenames not stored using UTF-8 encoding, Expand-Archive uses the raw value found in the archive. This can result in a filename that's different than the source filename stored in the archive.