A veces puede ser útil crear mediante programación archivos ZIP o extraer archivos de archivos existentes. Windows PowerShell 5.0 ha añadido dos cmdlets para hacer precisamente eso. El cmdlet Compress-Archive le permite crear nuevos archivos a partir de carpetas o archivos individuales y añadir archivos a los archivos; Extract-Archive se puede utilizar para descomprimir archivos.
Si aún no tiene PowerShell 5.0 o posterior instalado en sus sistemas, puede descargar la última versión de Windows Management Framework desde el sitio web de Microsoft aquí.
Uso de PowerShell para crear archivos zip
Comencemos por usar PowerShell para comprimir archivos en un nuevo archivo zip. Todo lo que necesitas hacer es usar el parámetro -Path para especificar la carpeta que quieres comprimir y el parámetro -DestinationPath para especificar el nombre del archivo que quieres crear. El siguiente comando comprimirá la carpeta Facturas en el directorio raíz C y creará un archivo llamado Facturas.zip en la carpeta Archivos:
Compress-Archive -Path C:\Invoices -DestinationPath C:\Archives\Invoices
Alternativamente, podríamos comprimir los archivos de la carpeta Facturas individualmente utilizando -LiteralPath en lugar de -Path. Este comando crea un archivo con sólo los dos archivos que aparecen explícitamente en el parámetro -LiteralPath:
Compress-Archive -LiteralPath C:\ Invoices\File1.txt, C:\Invoices\File2.txt -DestinationPath C:\Archives\Invoices -Force
Nota que he añadido el parámetro -Force para sobrescribir el archivo que he creado con el primer comando. Sin el parámetro -Force, no puede sobrescribir los archivos existentes y PowerShell le pedirá que añada archivos al archivo en su lugar.
Para añadir archivos a un archivo, utilice el parámetro -Update. El comando siguiente añade todos los archivos de la carpeta Facturas a mi archivo existente Invoices.zip:
Compress-Archive -Path C:\Invoices\* -Update -DestinationPath C:\Archives\Invoices
Opcionalmente, puede utilizar el parámetro -CompressionLevel con uno de los tres valores: Optimal, NoCompression o Fastest. Optimal es la configuración predeterminada si no se establece el parámetro -CompressionLevel; utiliza la mejor compresión disponible, pero puede tardar más que si se utiliza Fastest. Para crear un archivo sin compresión, utilice el valor NoCompression.
Uso de PowerShell para descomprimir archivos
Extraer archivos de un archivo es incluso más fácil que crear uno. Todo lo que necesitas hacer es especificar el nombre del archivo y la carpeta de destino para los archivos descomprimidos. El siguiente comando extrae el contenido del archivo Invoices.zip a una carpeta llamada InvoicesUnzipped utilizando el cmdlet Expand-Archive.
Expand-Archive -LiteralPath C:\Archives\Invoices.Zip -DestinationPath C:\ InvoicesUnzipped
La carpeta en la que desea descomprimir los archivos no necesita existir; Expand-Archive creará automáticamente la carpeta si es necesario. Pero si los archivos que desea descomprimir ya existen en la carpeta de destino, Expand-Archive devolverá un error. Puede sobrescribir los archivos en la carpeta de destino añadiendo el parámetro -Force al comando.