Necesito descomprimir un archivo con powershell. La forma típica en que he visto a todos hacer esto es automatizando el shell con un script.
$shellApplication = new-object -com shell.application
$zipPackage = $shellApplication.NameSpace($zipfilename)
$destinationFolder = $shellApplication.NameSpace($destination)
$destinationFolder.CopyHere($zipPackage.Items())
Esto no va a funcionar para mí, ya que Server Core no tiene un shell, por lo que no hay uno para automatizar. Esto da un error COM E_FAIL.
Powershell no parece poder hacerlo por sí solo, y si voy a una tercera parte, tengo que encontrar una forma de script para que la utilidad llegue al servidor en primer lugar. 7-Zip fue mi opción, pero no parece que pueda hacer un script para descargarlo e instalarlo. Sourceforge sigue escupiéndome archivos HTML.
¿Cómo puedo script completamente descomprimir un archivo zip en Server 2012 Core?
Respuestas:
Server 2012 viene con Dot.NET 4.5 que tiene System.IO.Compression.ZipFile que tiene un método ExtractToDirectory. Debería poder usar esto desde PowerShell.
Aquí hay un ejemplo.
Primero debe cargar el ensamblaje en el que se encuentra ZipFile:
Luego extrae el contenido
Editar: si ha actualizado a PowerShell 5 (Windows Management Framework 5.0), finalmente tiene cmdlets nativos:
fuente