Voglio creare un file zip in PowerShell, aggiungere elementi al file zip, quindi ottenere il contenuto compresso di tale file zip come byte subito dopo la creazione del file zip , nella stessa scipt. Il problema è che non sembra che l'applicazione zip abbia scritto il suo contenuto nel file system. Come si chiude/svuota l'applicazione zip in modo che la prossima istruzione PowerShell possa accedere al file zip appena creato?PowerShell - Come completare/chiudere un file zip in PowerShell
Esempio:
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
Il "dir test.zip" mostra un file zip senza contenuti, così il Get-Content restituisce nulla.
Si noti che questo sembra essere un problema con il comportamento asincrono dell'azione copyhere. Se dormo dopo la linea copyhere, il file zip verrà popolato. Tuttavia, non so per quanto tempo si deve dormire, né voglio ritardare l'elaborazione.
Molto Grazie in anticipo!
Non ho mai creato archivi da PowerShell, ma questo non sembra funzionare affatto. – Joey
dai uno sguardo qui: http://dotnetzip.codeplex.com/. Inoic.zip è un modo migliore per lavorare con il file zip! –
Lo fa, anzi funziona. Se si guarda la directory in cui si eseguono queste istruzioni, si scoprirà che è stato creato un file test.zip. –