compress-archive
and expand-archive
cmdlets -
cmdlets (pronounced command-lets) are specialized .NET
classes implementing a particular operation. You can determine which version
of PowerShell you have by opening a PowerShell window and typing
$psversiontable
. E.g., in the example below, the PowerShell version
is 3.0, so the cmdlets are not present:PS C:\Users\John\Documents> $psversiontable
Name Value
---- -----
PSVersion 3.0
WSManStackVersion 3.0
SerializationVersion 1.1.0.1
CLRVersion 4.0.30319.34209
BuildVersion 6.2.9200.17065
PSCompatibleVersions {1.0, 2.0, 3.0}
PSRemotingProtocolVersion 2.2
PS C:\Users\John\Documents> compress-archive -Path .\Anniversary_Update -DestinationPath .\Anniversary_Update.zip
compress-archive : The term 'compress-archive' is not recognized as the name of a cmdlet, function, script file, or
operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try
again.
At line:1 char:1
+ compress-archive -Path .\Anniversary_Update -DestinationPath .\Anniversary_Updat ...
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (compress-archive:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
PS C:\Users\John\Documents>
However, the cmdlets will work if version 5.0 or later is present as shown below:
Windows PowerShell Copyright (C) 2016 Microsoft Corporation. All rights reserved. PS C:\Users\Liza\documents> $psversiontable Name Value ---- ----- PSVersion 5.1.14393.187 PSEdition Desktop PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...} BuildVersion 10.0.14393.187 CLRVersion 4.0.30319.42000 WSManStackVersion 3.0 PSRemotingProtocolVersion 2.3 SerializationVersion 1.1.0.1 PS C:\Users\Liza\documents> compress-archive -Path ./Temp -DestinationPath ./temp.zip PS C:\Users\Liza\documents> expand-archive -Path temp.zip -DestinationPath c:\users\liza\documents\example PS C:\Users\Liza\documents>
In the first example above the contents of the Temp
directory
which is a directory beneath the directory from which the command is being run
will be placed in the file temp.zip
, which will be created in
the directory from which the command is being run. In the second example, the
files within the just created
zip
file will be extrated to a directory named example
, which doesn't
currently exist, but will be created by the cmdlet. Within the newly created
example
directory will be a Temp
subdirectory
containing the files that were in the Temp
directory directly
beneath the directory from which the cmdlets were executed.
If you attempt to create a zip file at the same location as one that currently exists with the same name, you will see an error message like the one below:
PS C:\Users\Liza\documents> compress-archive -Path ./SNMP -DestinationPath ./SNMP.zip compress-archive : The archive file C:\Users\Liza\documents\SNMP.zip already exists. Use the -Update parameter to update the existing archive file or use the -Force parameter to overwrite the existing archive file. At line:1 char:1 + compress-archive -Path ./SNMP -DestinationPath ./SNMP.zip + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (C:\Users\Liza\documents\SNMP.zip:String) [Compress-Archive], IOExcepti on + FullyQualifiedErrorId : ArchiveFileExists,Compress-Archive PS C:\Users\Liza\documents>
Category: PowerShell