Esta función la hice por que a veces tengo que analizar archivos del INEGI y al momento de descargar los datos abiertos vienen comprimidos en multiples archivos zip y como era una tarea repetitiva ví que podía automatizarla de tal forma que pueda descomprimir todos los archivos zip en un directorio, para usarla es muy sencillo, solo debes de moverte en la terminal hasta el directorio donde están todos tus archivos zip y luego hacer el llamado de la función, ejemplo:

Imaginemos que tenemos una carpeta con 32 archivos zip que queremos descomprimir y en la terminal ya estoy ubicado en ese directorio, solo debo hacer el llamado de la función unzip:

La salida del comando nos informa de forma iterativa el nombre del archivo que se va descomprimiendo y el número de archivo del total de archivos a descomprimir, al final nos informa que ya se han descomprimido los archivos.

 Copiar código

function unzip {
	# https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.archive/compress-archive?view=powershell-7.2
	$curP = $pwd
	$Zips = Get-ChildItem -path $curP  -filter "*.zip"  
	$Destination = $curP
	$numFiles = (Get-ChildItem -Filter "*.zip" | Measure-Object).Count
	if ($numFiles -eq 0) {
		Write-Warning "No hay archivos zips para ser descomprimidos"
	}
	elseif ($numFiles -eq 1) {
		Write-Host "Descomprimiendo: " $Zips.name -ForegroundColor Yellow
		Expand-Archive $Zips.name -Force
		Write-Host "Proceso finalizado " -ForegroundColor Green
	}
	elseif ($numFiles -gt 1) {
		foreach ($_ in $Zips) {
		$nRound = [math]::Round(((($Zips.IndexOf($_) + 1) / $numFiles) * 100), 2)
		Write-Host "" ($Zips.IndexOf($_) + 1) " de "  $numFiles  " | " $nRound "% | Descomprimiendo: "  $_.name -ForegroundColor Yellow
		Expand-Archive $_ -Force
		}
		Write-Host "Proceso de descompresion finalizado exitosamente" -ForegroundColor Green
	}
}