Búsqueda de sitios web

Descomprimir PowerShell | Una guía completa para descomprimir PowerShell


Introducción al descomprimido de PowerShell

PowerShell unzip extrae los archivos y carpetas del archivo Zip específico en la misma ruta en la que existe el archivo ZIP o en la ruta de destino específica usando el comando Expandir-Archivo o usando el espacio de nombres System.IO.Compression para descomprimir archivos y carpetas.

Sintaxis de descomprimir PowerShell

A continuación se detalla la sintaxis mencionada:

1. Sintaxis del cmdlet Expandir-Archivo.

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

2. Descomprímalo usando NameSpace.

[System.IO.Compression.ZipFile]::ExtractToDirectory(String, String)
[System.IO.Compression.ZipFile]::ExtractToDirectory(String, String, Boolean)
[System.IO.Compression.ZipFile]::ExtractToDirectory(String, String, Encoding)
[System.IO.Compression.ZipFile]::ExtractToDirectory(String, String, Encoding, Boolean)

3. Módulo 7ZIP para extraer contenido de archivo.

Expand-7Zip
[-ArchiveFileName] <string>
[-TargetPath] <string>
[-CustomInitialization <scriptblock>]
[<CommonParameters>]
Expand-7Zip
[-ArchiveFileName] <string>
[-TargetPath] <string>
[-Password <string>]
[-CustomInitialization <scriptblock>]
[<CommonParameters>]
Expand-7Zip
[-ArchiveFileName] <string>
[-TargetPath] <string>
[-SecurePassword <securestring>]
[-CustomInitialization <scriptblock>]
[<CommonParameters>]

¿Cómo funcionan los comandos de descomprimir en PowerShell?

Expandir-Archivo es el comando incorporado que se utiliza para extraer el contenido de los archivos ZIP. Este cmdlet no admite otros formatos de archivos como RAR y 7ZIP.

Los comandos de la utilidad ZIP (Comprimir-Archivar y Expandir-Archivar) son parte del módulo de PowerShell llamado Microsoft.PowerShell.Archive.

Código:

Get-Command Expand-Archive

Salida:

Para la ruta de origen, PowerShell utiliza cualquiera de las rutas o LiteralPath (si no desea utilizar el comodín). Puede utilizar la ruta de origen y destino como ruta local o la ruta de la carpeta NAS con los permisos de lectura y escritura apreciados.

En caso de que no tengas este módulo instalado en tu sistema, puedes descargarlo desde la galería de PowerShell.

https://www.powershellgallery.com/packages/Microsoft.PowerShell.Archive/1.1.0.0

En segundo lugar, puede utilizar el espacio de nombres .Net [System.IO.Compression], clase ZipFile con métodos ExtractToDirectory donde puede proporcionar la ruta de origen del archivo Zip y la ruta de destino para extraer el mismo. Este método requiere que IO.Compression.ZipFile.dll esté presente en el sistema.

En tercer lugar, en caso de que sus archivos sean RAR, ISO o 7Zip además del archivo ZIP, puede descargar el módulo 7ZIP para PowerShell compatible con la utilidad 7ZIP. Hay un comando Expand-7Zip que extrae la mayoría de los tipos de archivos comprimidos.

Ejemplos de descompresión de PowerShell

A continuación se muestran ejemplos de descompresión de PowerShell:

Ejemplo #1

Comando Expandir-Archivo para extraer archivos y carpetas en la computadora local.

El siguiente comando extraerá el DSC.Zip en la ruta de origen y en la ruta de destino E:\Extract.

Código:

Expand-Archive -Path E:\DSC.zip -DestinationPath E:\Extract -Verbose

Tenga en cuenta que en el comando anterior, la carpeta de destino Extraer puede no existir, pero el comando Expandir-Archivar la crea automáticamente si aún no está allí.

Salida:

Ejemplo #2

Comando Expandir-Archivo con parámetro -Force.

Si los archivos ya existen en la ruta de destino, con el parámetro -Force se sobrescriben los archivos y carpetas en la ruta de destino.

Sin parámetro -Force.

Con parámetro de fuerza.

Expand-Archive -Path E:\DSC.zip -DestinationPath E:\Extract -Force -Verbose

Salida:

Ejemplo #3

Comando Expandir-Archivar para extraer datos en una ruta local.

Para extraer los datos en la ruta local, use el punto (.) para la ruta de destino como se muestra a continuación.

Código:

Expand-Archive E:\DSC.zip -DestinationPath . -Force -Verbose

El comando anterior extraerá E:\DSC.Zip a la ruta de la carpeta C:\temp.

Ejemplo #4

Comando Expandir-Archivar para una unidad compartida.

También podemos utilizar la ruta compartida como origen y destino con los permisos de lectura y escritura adecuados.

Código:

Expand-Archive -Path \\ad\Shared\Temp\DSC.zip `
-DestinationPath \\ad\shared\temp\extracted -Force -Verbose

El comando anterior extrae el ZIP en la ruta de la carpeta compartida.

Ejemplo #5

Espacio de nombres System.IO.Compression.ZipFile.

Este método utiliza el espacio de nombres .Net System.IO.Compression clase ZIPFile para extraer los datos del archivo comprimido.

En caso de que esta clase ZipFile no esté disponible, podemos agregar el ensamblaje como se muestra a continuación.

Código:

Add-Type -AssemblyName System.IO.Compression.ZipFile

Para extraer los datos.

[System.IO.Compression.ZipFile]::ExtractToDirectory("C:\Temp\DSC.zip","C:\Temp\Extracted")

El comando anterior extraerá el contenido del archivo ZIP a la ruta C:\Temp\Extracted. Si la carpeta de destino ("Extraída") no existe, creará esa carpeta.

Cuando utilice el mismo destino para extraer archivos nuevamente, se generará una excepción con los archivos de destino que ya existen.

Para sobrescribir los archivos de destino, necesitamos agregar un tercer parámetro y que es un valor booleano. Utilice $true para sobrescribir.

Código:

[System.IO.Compression.ZipFile]::ExtractToDirectory("C:\Temp\DSC.zip","C:\Temp\Extracted",$true)

También puede usar la codificación para leer y escribir archivos zip y, para eso, debe agregar el argumento adicional EntryNameEncoding.

Para saber más sobre la clase de codificación, consulte el siguiente enlace:

https://learn.microsoft.com/en-us/dotnet/api/system.text.encoding?view=net-5.0

A continuación se muestra el ejemplo de codificación europa:

Código:

$encode = [System.Text.Encoding]::GetEncoding(29001)
[System.IO.Compression.ZipFile]::ExtractToDirectory(
"C:\Temp\DSC.zip","C:\Temp\Extracted",$encode )

Para sobrescribir los archivos de destino con codificación, utilice el argumento booleano $true.

Código:

[System.IO.Compression.ZipFile]::ExtractToDirectory( "C:\Temp\DSC.zip", "C:\Temp\Extracted", $encode,$true)

Ejemplo #6

Usando los comandos del módulo 7Zip.

En caso de que sus archivos estén comprimidos con otro software que no sea ZIP, puede usar 7ZIP para extraer el archivo comprimido (incluso archivos ZIP). 7ZIP es un software muy popular, pero no es necesario instalarlo, solo necesita descargar e instalar módulos.

Primero debe descargar e instalar el módulo 7Zip 7Zip4PowerShell.

Para descargar e instalar el módulo, utilice el siguiente comando.

Código:

Install-Module 7Zip4PowerShell -Scope CurrentUser -Force -Verbose

Alternativamente, también puede descargar el módulo desde la galería de PowerShell y seguir las instrucciones proporcionadas.

https://www.powershellgallery.com/packages/7Zip4Powershell/1.9.0

Los siguientes comandos se envían con este módulo.

Código:

Get-Command -Module 7Zip4PowerShell

Salida:

Para extraer el archivo comprimido, usaremos el comando Expand-7Zip.

Código:

Expand-7Zip -ArchiveFileName C:\Temp\DSC.rar -TargetPath C:\Extracted -Verbose

Salida:

Si la carpeta de destino no existe, se creará automáticamente.

Conclusión

Los archivos y carpetas se comprimen y almacenan en un solo archivo llamado archivo ZIP. PowerShell tiene varias formas de extraerlos sin descargar ni instalar ningún software. Los métodos mencionados anteriormente funcionan tanto en aplicaciones multiplataforma.

Artículos relacionados