HOWTO · PowerShell
PowerShell Decomprimi
Questo articolo introduce come estrarre un file zip in powershell.
In questa pagina
Per estrarre un archivio ZIP in PowerShell, usa Expand-Archive con il percorso dell’archivio e, se necessario, una destinazione. Per esempio, Expand-Archive -Path .\backup.zip -DestinationPath .\restored estrae l’archivio nella cartella restored. Il cmdlet estrae file e cartelle; non crea archivi ZIP.
Estrarre un archivio ZIP con Expand-Archive
Expand-Archive accetta il percorso di un archivio e, facoltativamente, un percorso di destinazione. Se la cartella di destinazione non esiste, viene creata. Scegli una destinazione che puoi identificare e a cui puoi accedere, soprattutto quando estrai un archivio di origine sconosciuta. Gli archivi ZIP possono contenere più file e cartelle: controlla il contenuto della destinazione prima di aprire o usare i file estratti.
Scegliere -Path o -LiteralPath
Usa -Path quando il percorso dell’archivio può contenere caratteri jolly che corrispondono a un percorso. Usa -LiteralPath quando PowerShell deve trattare il percorso fornito esattamente così com’è, inclusi caratteri come le parentesi quadre. Per un file chiamato backup[v1].zip, specifica il percorso con -LiteralPath; con -Path, le parentesi potrebbero essere interpretate come sintassi per i caratteri jolly anziché come parte del nome del file. Racchiudere un valore tra virgolette aiuta PowerShell a passarlo come un unico argomento, ma non trasforma il percorso con caratteri jolly -Path in un percorso letterale.
Impostare la destinazione e gestire i file esistenti
Specifica -DestinationPath seguito dalla cartella in cui vuoi estrarre il contenuto. Se ometti questo parametro, Expand-Archive crea nella posizione corrente una cartella con il nome dell’archivio ed estrae lì il contenuto. Specifica -DestinationPath per scegliere una posizione prevedibile e semplificare la pulizia successiva.
L’estrazione può non riuscire se nella destinazione esistono già file contenuti nell’archivio. -Force consente di sostituire i dati esistenti. Usalo solo se vuoi davvero sovrascrivere quei file; prima controlla o fai una copia di sicurezza dei contenuti importanti della destinazione. Non è semplicemente un modo per nascondere una richiesta di conferma.
Se l’archivio non viene trovato, controlla la directory di lavoro corrente e verifica se il percorso è relativo o assoluto. Controlla che il nome e l’estensione siano corretti e, se il nome contiene caratteri jolly, usa -LiteralPath. Se l’archivio viene trovato ma i file estratti non si trovano dove previsto, specifica -DestinationPath e controlla quella cartella. Puoi aggiungere -WhatIf per visualizzare un’anteprima del comando prima di eseguirlo; rimuovi questo parametro quando vuoi procedere con l’estrazione. -Confirm richiede una conferma per l’operazione, mentre -PassThru restituisce informazioni sui file estratti, che puoi elaborare in una pipeline di PowerShell.
Parametri comuni di Expand-Archive
| Parametro | Uso |
|---|---|
-Path |
Specifica un percorso dell’archivio in cui i caratteri jolly possono essere interpretati. |
-LiteralPath |
Specifica un percorso dell’archivio da trattare letteralmente, anche quando il nome del file contiene caratteri jolly. |
-DestinationPath |
Seleziona la cartella in cui estrarre il contenuto. |
-Force |
Consente di sostituire dati esistenti nella destinazione; usalo con cautela. |
-WhatIf |
Mostra un’anteprima dell’operazione senza eseguirla. |
-Confirm |
Richiede una conferma prima dell’operazione. |
-PassThru |
Restituisce informazioni sui file estratti. |
Esempi: estrarre archivi ZIP in PowerShell
Esegui questo esempio autonomo in PowerShell. Crea un piccolo archivio in una directory temporanea, lo estrae in una cartella separata e visualizza il testo estratto. Il codice e le etichette o gli output visibili nei blocchi restano in inglese.
$root = Join-Path ([IO.Path]::GetTempPath()) ([guid]::NewGuid().ToString('N'))
$source = Join-Path $root 'source'
$destination = Join-Path $root 'extracted'
$archive = Join-Path $root 'sample.zip'
New-Item -ItemType Directory -Path $source -Force | Out-Null
Set-Content -LiteralPath (Join-Path $source 'notes.txt') -Value 'Archive ready'
Compress-Archive -LiteralPath (Join-Path $source 'notes.txt') -DestinationPath $archive
Expand-Archive -LiteralPath $archive -DestinationPath $destination
Get-Content -LiteralPath (Join-Path $destination 'notes.txt')
Remove-Item -LiteralPath $root -Recurse -Force
Archive ready
Per un archivio esistente, usa Expand-Archive -Path .\backup.zip -DestinationPath .\restored per estrarlo nella cartella scelta. Se il percorso stesso contiene caratteri jolly, usa -LiteralPath, come in Expand-Archive -LiteralPath 'C:\Archives\backup[v1].zip' -DestinationPath 'C:\Restored'. L’esempio autonomo precedente è stato eseguito correttamente e ha visualizzato Archive ready (codice di uscita 0); questa etichetta resta in inglese nel blocco di output. Adatta questi comandi all’archivio e alla destinazione che usi.