quiero crear un archivo zip en PowerShell, añadir elementos al archivo zip, a continuación, obtener el contenido comprimido de ese archivo zip como bytes inmediatamente después de crear el archivo zip , en el mismo scipt El problema es que no parece que la aplicación zip haya escrito su contenido en el sistema de archivos. ¿Cómo se cierra/vacía la aplicación zip para que la siguiente declaración de PowerShell pueda obtener acceso al archivo zip recién creado?Powershell - Cómo cumplimentar/cerrar un archivo zip en powershell
Ejemplo:
new-item -type File test.zip -force
$zip = (get-item test.zip).fullname
$app = new-object -com shell.application
$folder = $app.namespace($zip)
$item = new-item file.txt -itemtype file -value "Mooo" -force
$folder.copyhere($item.fullname)
dir test.zip # <---- Empty test.zip file
Get-Content -Encoding byte $zip | echo # <-- nothing echoed
El "dir test.zip" muestra un archivo zip con ningún contenido, por lo tanto el Get-Content vuelve nada.
Tenga en cuenta que esto parece ser un problema con el comportamiento asíncrono de la acción CopyHere. Si duermo después de la línea copyhere, el archivo comprimido se completará. Sin embargo, no sé cuánto tiempo uno debe dormir, ni quiero retrasar el procesamiento.
Mucho gracias por adelantado!
Nunca he creado archivos de PowerShell, pero parece que no funcionaría en absoluto. – Joey
échale un vistazo aquí: http://dotnetzip.codeplex.com/. ¡Inoic.zip es mejor para trabajar con archivos zip! –
Sí, de hecho funciona. Si observa el directorio en el que ejecuta estas declaraciones, encontrará que se ha creado un archivo test.zip. –