Udostępnij przez


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 testsub katalog i zawiera testlog.txt plik, który odzwierciedla oryginalną strukturę katalogu.
  • Obiekt FileInfo tworzy duplikat testlog.txt w katalogu głównym archiwum. Zduplikowany plik jest tworzony, ponieważ rekursja wysłała obiekt pliku do Compress-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 wartość LiteralPath jest używana dokładnie tak, jak jest typowana. Żadne znaki nie są interpretowane jako symbole wieloznaczne. Jeśli ścieżka zawiera znaki ucieczki, należy ująć każdy znak ucieczki w pojedynczy cudzysłów, aby program PowerShell nie interpretował żadnych znaków jako sekwencji ucieczki. Aby określić wiele ścieżek i dołączyć pliki w wielu lokalizacjach w wyjściowym pliku zip, użyj przecinków, aby oddzielić ścieżki.

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.