Compress-Archive
Tworzy skompresowane archiwum lub spakowane pliki z określonych plików i katalogów.
Składnia
Path (Domyślna)
Compress-Archive
[-Path] <String[]>
[-DestinationPath] <String>
[-CompressionLevel <String>]
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
PathWithUpdate
Compress-Archive
[-Path] <String[]>
[-DestinationPath] <String>
-Update
[-CompressionLevel <String>]
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
PathWithForce
Compress-Archive
[-Path] <String[]>
[-DestinationPath] <String>
-Force
[-CompressionLevel <String>]
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
LiteralPathWithUpdate
Compress-Archive
[-DestinationPath] <String>
-LiteralPath <String[]>
-Update
[-CompressionLevel <String>]
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
LiteralPathWithForce
Compress-Archive
[-DestinationPath] <String>
-LiteralPath <String[]>
-Force
[-CompressionLevel <String>]
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
LiteralPath
Compress-Archive
[-DestinationPath] <String>
-LiteralPath <String[]>
[-CompressionLevel <String>]
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Opis
Polecenie Compress-Archive cmdlet tworzy skompresowany lub spakowany plik archiwum z co najmniej jednego określonego pliku lub katalogów. Archiwum pakuje wiele plików z opcjonalną kompresją do pojedynczego spakowanego pliku w celu łatwiejszego dystrybucji i magazynu. Plik archiwum można skompresować przy użyciu algorytmu kompresji określonego przez parametr CompressionLevel .
Polecenie Compress-Archive cmdlet używa interfejsu API System.IO.Compression.ZipArchive do kompresowania plików.
Interfejs API ogranicza maksymalny rozmiar pliku do 2 GB. Aby uzyskać więcej informacji, zobacz System.IO.Compression.ZipArchive.
Uwaga / Notatka
Polecenie Compress-Archive cmdlet ignoruje ukryte pliki i foldery podczas tworzenia lub aktualizowania pliku archiwum. Na maszynach innych niż Windows obejmuje to pliki i foldery o nazwie rozpoczynającej się od znaku kropki (.).
Aby upewnić się, że ukryte pliki i foldery są kompresowane do archiwum, zamiast tego użyj interfejsu API platformy .NET.
W niektórych przykładach użyto fragmentowania, aby zmniejszyć długość wiersza przykładów kodu. Aby uzyskać więcej informacji, zobacz about_Splatting.
Przykłady
Przykład 1. Kompresowanie plików w celu utworzenia pliku archiwum
Ten przykład kompresuje pliki z różnych katalogów i tworzy plik archiwum. Symbol wieloznaczny służy do pobierania wszystkich plików z określonym rozszerzeniem pliku. W pliku archiwum nie ma struktury katalogów, ponieważ ścieżka określa tylko nazwy plików.
$compress = @{
Path = "C:\Reference\Draftdoc.docx", "C:\Reference\Images\*.vsd"
CompressionLevel = "Fastest"
DestinationPath = "C:\Archives\Draft.zip"
}
Compress-Archive @compress
Parametr Path akceptuje określone nazwy plików i nazwy plików z symbolami wieloznacznymi, *.vsd. Ścieżka używa listy rozdzielanej przecinkami do pobierania plików z różnych katalogów. Poziom kompresji jest najszybszy , aby skrócić czas przetwarzania. Parametr DestinationPath określa lokalizację Draft.zip pliku. Plik Draft.zip zawiera Draftdoc.docx i wszystkie pliki z .vsd rozszerzeniem.
Przykład 2. Kompresowanie plików przy użyciu metody LiteralPath
W tym przykładzie kompresuje określone nazwane pliki i tworzy nowy plik archiwum. W pliku archiwum nie ma struktury katalogów, ponieważ ścieżka określa tylko nazwy plików.
$compress = @{
LiteralPath= "C:\Reference\Draft Doc.docx", "C:\Reference\Images\diagram2.vsd"
CompressionLevel = "Fastest"
DestinationPath = "C:\Archives\Draft.zip"
}
Compress-Archive @compress
Używana jest ścieżka bezwzględna i nazwy plików, ponieważ parametr LiteralPath nie akceptuje symboli wieloznacznych. Ścieżka używa listy rozdzielanej przecinkami do pobierania plików z różnych katalogów. Poziom kompresji jest najszybszy , aby skrócić czas przetwarzania. Parametr DestinationPath określa lokalizację Draft.zip pliku. Plik Draft.zip zawiera Draftdoc.docx tylko pliki i diagram2.vsd.
Przykład 3. Kompresowanie katalogu zawierającego katalog główny
Ten przykład kompresuje katalog i tworzy plik archiwum zawierający katalog główny oraz wszystkie jego pliki i podkatalogi. Plik archiwum ma strukturę katalogu, ponieważ ścieżka określa katalog główny.
Compress-Archive -Path C:\Reference -DestinationPath C:\Archives\Draft.zip
Compress-Archiveużywa parametru Path, aby określić katalog główny . C:\Reference Parametr DestinationPath określa lokalizację pliku archiwum. Archiwum Draft.zip zawiera Reference katalog główny oraz wszystkie jego pliki i podkatalogi.
Przykład 4. Kompresowanie katalogu, który wyklucza katalog główny
Ten przykład kompresuje katalog i tworzy plik archiwum, który wyklucza katalog główny, ponieważ ścieżka używa gwiazdki (*) wieloznacznej. Archiwum zawiera strukturę katalogów zawierającą pliki i podkatalogi katalogu głównego.
Compress-Archive -Path C:\Reference\* -DestinationPath C:\Archives\Draft.zip
Compress-Archive używa parametru Path , aby określić katalog C:\Reference główny z gwiazdką (*) symbolem wieloznacznymi. Parametr DestinationPath określa lokalizację pliku archiwum. Archiwum Draft.zip zawiera pliki i podkatalogi katalogu głównego. Katalog Reference główny jest wykluczony z archiwum.
Przykład 5. Kompresowanie tylko plików w katalogu głównym
Ten przykład kompresuje tylko pliki w katalogu głównym i tworzy plik archiwum. Nie ma struktury katalogów w archiwum, ponieważ kompresowane są tylko pliki.
Compress-Archive -Path C:\Reference\*.* -DestinationPath C:\Archives\Draft.zip
Compress-Archive używa parametru Path , aby określić katalog główny z C:\Reference symbolem wieloznacznymi gwiazdka-kropka (*.*). Parametr DestinationPath określa lokalizację pliku archiwum. Archiwum Draft.zip zawiera Reference tylko pliki katalogu głównego, a katalog główny jest wykluczony.
Przykład 6. Używanie potoku do archiwizowania plików
W tym przykładzie pliki są wysyłane w dół potoku w celu utworzenia archiwum. W pliku archiwum nie ma struktury katalogów, ponieważ ścieżka określa tylko nazwy plików.
Get-ChildItem -Path C:\Reference\Afile.txt, C:\Reference\Images\Bfile.txt |
Compress-Archive -DestinationPath C:\Archives\PipelineFiles.zip
Get-ChildItem używa parametru Ścieżka , aby określić dwa pliki z różnych katalogów. Każdy plik jest reprezentowany przez obiekt FileInfo i jest wysyłany w dół potoku do Compress-Archive.
Dwa określone pliki są archiwizowane w pliku PipelineFiles.zip.
Przykład 7. Użyj potoku, aby zarchiwizować katalog
Ten przykład wysyła katalog w dół potoku, aby utworzyć archiwum. Pliki są wysyłane jako obiekty FileInfo i katalogi jako obiekty DirectoryInfo . Struktura katalogów archiwum nie zawiera katalogu głównego, ale jego pliki i podkatalogi znajdują się w archiwum.
Get-ChildItem -Path C:\LogFiles |
Compress-Archive -DestinationPath C:\Archives\PipelineDir.zip
Get-ChildItem używa parametru Ścieżka , aby określić C:\LogFiles katalog główny. Każdy obiekt FileInfo i DirectoryInfo jest wysyłany w dół potoku.
Compress-Archive dodaje każdy obiekt do PipelineDir.zip archiwum. Parametr Path nie jest określony, ponieważ obiekty potoku są odbierane do pozycji parametru 0.
Przykład 8. Jak rekursja może mieć wpływ na archiwa
W tym przykładzie pokazano, jak rekursja może duplikować pliki w archiwum. Jeśli na przykład używasz parametru Get-ChildItemRecurse . W ramach procesów rekursji każdy obiekt FileInfo i DirectoryInfo jest wysyłany w dół potoku i dodawany do archiwum.
Get-ChildItem -Path C:\TestLog -Recurse |
Compress-Archive -DestinationPath C:\Archives\PipelineRecurse.zip
Katalog C:\TestLog nie zawiera żadnych plików. Zawiera podkatalog o nazwie testsub , który zawiera testlog.txt plik.
Get-ChildItemużywa parametru Path, aby określić katalog główny . C:\TestLog Parametr Recurse przetwarza pliki i katalogi. Obiekt DirectoryInfo jest tworzony dla testsub i .
Każdy obiekt jest wysyłany w dół potoku do Compress-Archiveelementu .
DestinationPath określa lokalizację pliku archiwum. Parametr Path nie jest określony, ponieważ obiekty potoku są odbierane do pozycji parametru 0.
W poniższym podsumowaniu opisano PipelineRecurse.zip zawartość archiwum zawierającą zduplikowany plik:
-
Obiekt DirectoryInfo tworzy
testsubkatalog i zawieratestlog.txtplik, który odzwierciedla oryginalną strukturę katalogu. - Obiekt FileInfo tworzy duplikat
testlog.txtw katalogu głównym archiwum. Zduplikowany plik jest tworzony, ponieważ rekursja wysłała obiekt pliku doCompress-Archiveobiektu . To zachowanie jest oczekiwane, ponieważ każdy obiekt wysłany w dół potoku jest dodawany do archiwum.
Przykład 9. Aktualizowanie istniejącego pliku archiwum
W tym przykładzie zaktualizowano istniejący plik archiwum , Draft.zipw C:\Archives katalogu . W tym przykładzie istniejący plik archiwum zawiera katalog główny oraz jego pliki i podkatalogi.
Compress-Archive -Path C:\Reference -Update -DestinationPath C:\Archives\Draft.zip
Polecenie aktualizuje Draft.zip nowsze wersje istniejących plików w C:\Reference katalogu i jego podkatalogach. Nowe pliki, które zostały dodane do C:\Reference lub jego podkatalogów, są uwzględniane w zaktualizowanym Draft.zip archiwum.
Parametry
-CompressionLevel
Określa, ile kompresji należy zastosować podczas tworzenia pliku archiwum. Szybsza kompresja wymaga mniej czasu na utworzenie pliku, ale może spowodować większe rozmiary plików.
Jeśli ten parametr nie zostanie określony, polecenie używa wartości domyślnej Optimal.
Poniżej przedstawiono dopuszczalne wartości tego parametru:
- najszybszym. Użyj najszybszej dostępnej metody kompresji, aby skrócić czas przetwarzania. Szybsza kompresja może spowodować większe rozmiary plików.
- Brak kompresji. Nie kompresuje plików źródłowych.
- optymalne. Czas przetwarzania zależy od rozmiaru pliku.
Właściwości parametru
| Typ: | String |
| Domyślna wartość: | Optimal |
| Dopuszczalne wartości: | Optimal, NoCompression, Fastest |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Confirm
Prosi o potwierdzenie przed uruchomieniem cmdletu.
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | False |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
| Aliasy: | por |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-DestinationPath
Ten parametr jest wymagany i określa ścieżkę do pliku wyjściowego archiwum. Ścieżka Docelowa powinna zawierać nazwę spakowanego pliku oraz ścieżkę bezwzględną lub względną do spakowanego pliku.
Jeśli nazwa pliku w pliku DestinationPath nie ma .zip rozszerzenia nazwy pliku, polecenie cmdlet dodaje .zip rozszerzenie nazwy pliku.
Właściwości parametru
| Typ: | String |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | 1 |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Force
Użyj tego parametru, aby zastąpić istniejący plik archiwum.
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | False |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
PathWithForce
| Position: | Named |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
LiteralPathWithForce
| Position: | Named |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-LiteralPath
Określa ścieżkę lub ścieżki do plików, które chcesz dodać do pliku spakowanego archiwum. W przeciwieństwie do parametru path
Właściwości parametru
| Typ: | String[] |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
| Aliasy: | PSPath |
Zestawy parametrów
LiteralPathWithUpdate
| Position: | Named |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | True |
| Wartość z pozostałych argumentów: | False |
LiteralPathWithForce
| Position: | Named |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | True |
| Wartość z pozostałych argumentów: | False |
LiteralPath
| Position: | Named |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | True |
| Wartość z pozostałych argumentów: | False |
-PassThru
Powoduje, że polecenie cmdlet wyprowadza obiekt pliku reprezentujący utworzony plik archiwum.
Ten parametr został wprowadzony w programie PowerShell 6.0.
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | False |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Path
Określa ścieżkę lub ścieżki do plików, które chcesz dodać do pliku spakowanego archiwum. Aby określić wiele ścieżek i dołączyć pliki w wielu lokalizacjach, użyj przecinków, aby oddzielić ścieżki.
Ten parametr akceptuje symbole wieloznaczne. Symbole wieloznaczne umożliwiają dodawanie wszystkich plików w katalogu do pliku archiwum.
Używanie symboli wieloznacznych z katalogiem głównym wpływa na zawartość archiwum:
- Aby utworzyć archiwum zawierające katalog główny oraz wszystkie jego pliki i podkatalogi, określ katalog główny w ścieżce bez symboli wieloznacznych. Przykład:
-Path C:\Reference - Aby utworzyć archiwum, które wyklucza katalog główny, ale spakuje wszystkie jego pliki i podkatalogi, użyj symbolu wieloznakowego gwiazdki (
*). Przykład:-Path C:\Reference\* - Aby utworzyć archiwum, które spakuje tylko pliki w katalogu głównym, użyj symbolu wieloznakowego star-dot-star (
*.*). Podkatalogi katalogu głównego nie są uwzględniane w archiwum. Przykład:-Path C:\Reference\*.*
Właściwości parametru
| Typ: | String[] |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | True |
| DontShow: | False |
Zestawy parametrów
Path
| Position: | 0 |
| Obowiązkowy: | True |
| Wartość z potoku: | True |
| Wartość z potoku według nazwy właściwości: | True |
| Wartość z pozostałych argumentów: | False |
PathWithUpdate
| Position: | 0 |
| Obowiązkowy: | True |
| Wartość z potoku: | True |
| Wartość z potoku według nazwy właściwości: | True |
| Wartość z pozostałych argumentów: | False |
PathWithForce
| Position: | 0 |
| Obowiązkowy: | True |
| Wartość z potoku: | True |
| Wartość z potoku według nazwy właściwości: | True |
| Wartość z pozostałych argumentów: | False |
-Update
Aktualizuje określone archiwum, zastępując starsze wersje plików w archiwum nowszymi wersjami plików o tych samych nazwach. Możesz również dodać ten parametr, aby dodać pliki do istniejącego archiwum.
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | False |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
PathWithUpdate
| Position: | Named |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
LiteralPathWithUpdate
| Position: | Named |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-WhatIf
Pokazuje, co się stanie, jeśli polecenie cmdlet zostanie uruchomione. Cmdlet nie został uruchomiony.
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | False |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
| Aliasy: | Wi |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
CommonParameters
To polecenie cmdlet obsługuje typowe parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction i -WarningVariable. Aby uzyskać więcej informacji, zobacz about_CommonParameters.
Dane wejściowe
String
Możesz potokować ciąg zawierający ścieżkę do co najmniej jednego pliku.
Dane wyjściowe
None
Domyślnie to polecenie cmdlet nie zwraca żadnych danych wyjściowych.
FileInfo
Jeśli używasz parametru PassThru , to polecenie cmdlet zwraca obiekt FileInfo .
Uwagi
Używanie rekursji i wysyłanie obiektów w dół potoku może duplikować pliki w archiwum. Jeśli na przykład używasz z Get-ChildItem parametrem Recurse , każdy obiekt FileInfo i DirectoryInfo , który jest wysyłany w dół potoku, zostanie dodany do archiwum.
Polecenie cmdlet Compress-Archive używa kodowania UTF-8. Inne narzędzia archiwum ZIP mogą używać innego schematu kodowania. Podczas wyodrębniania plików z nazwami plików, które nie są przechowywane przy użyciu kodowania UTF-8, Expand-Archive używa wartości pierwotnej znalezionej w archiwum. Może to spowodować, że nazwa pliku różni się od nazwy pliku źródłowego przechowywanego w archiwum.