Compress-Archive
Создает сжатый архив или zippped-файл из указанных файлов и каталогов.
Синтаксис
Path (по умолчанию)
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>]
Описание
Командлет Compress-Archive
создает сжатый или архивный файл из одного или нескольких указанных файлов или каталогов. Архивные пакеты нескольких файлов с необязательным сжатием в один zip-файл для упрощения распространения и хранения. Архивный файл можно сжать с помощью алгоритма сжатия, указанного параметром CompressionLevel.
Командлет Compress-Archive
использует API System.IO.Compression.ZipArchive для сжатия файлов.
API ограничивает максимальный размер файла до 2 ГБ. Дополнительные сведения см. в разделе System.IO.Compression.ZipArchive.
Замечание
Командлет Compress-Archive
игнорирует скрытые файлы и папки при создании или обновлении архивного файла. На компьютерах, отличных от Windows, это включает файлы и папки с именем, начинающимся с символа периода (.
).
Чтобы убедиться, что скрытые файлы и папки сжимаются в архив, используйте ВМЕСТО этого API .NET.
В некоторых примерах используется сложение для уменьшения длины строки примеров кода. Дополнительные сведения см. в about_Splatting.
Примеры
Пример 1. Сжатие файлов для создания архивного файла
В этом примере файлы сжимаются из разных каталогов и создаются архивные файлы. Подстановочный знак используется для получения всех файлов с определенным расширением. В архивном файле нет структуры каталогов, так как путь указывает только имена файлов.
$compress = @{
Path = "C:\Reference\Draftdoc.docx", "C:\Reference\Images\*.vsd"
CompressionLevel = "Fastest"
DestinationPath = "C:\Archives\Draft.zip"
}
Compress-Archive @compress
Параметр пути принимает определенные имена файлов и имена файлов с подстановочными знаками, *.vsd
. Путь использует разделенный запятыми список для получения файлов из разных каталогов. Уровень сжатия самый быстрый для уменьшения времени обработки. Параметр DestinationPath указывает расположение файла Draft.zip
. Файл Draft.zip
содержит Draftdoc.docx
и все файлы с расширением .vsd
.
Пример 2. Сжатие файлов с помощью LiteralPath
В этом примере сжимаются определенные именованные файлы и создаются архивные файлы. В архивном файле нет структуры каталогов, так как путь указывает только имена файлов.
$compress = @{
LiteralPath= "C:\Reference\Draft Doc.docx", "C:\Reference\Images\diagram2.vsd"
CompressionLevel = "Fastest"
DestinationPath = "C:\Archives\Draft.zip"
}
Compress-Archive @compress
Абсолютный путь и имена файлов используются, так как параметр LiteralPath не принимает подстановочные знаки. Путь использует разделенный запятыми список для получения файлов из разных каталогов. Уровень сжатия самый быстрый для уменьшения времени обработки. Параметр DestinationPath указывает расположение файла Draft.zip
. Файл Draft.zip
содержит только Draftdoc.docx
и diagram2.vsd
.
Пример 3. Сжатие каталога, включающего корневой каталог
Этот пример сжимает каталог и создает архивный файл, который включает корневой каталог, а также все его файлы и вложенные каталоги. Архивный файл содержит структуру каталогов, так как путь указывает корневой каталог.
Compress-Archive -Path C:\Reference -DestinationPath C:\Archives\Draft.zip
Compress-Archive
использует параметр пути для указания корневого каталога C:\Reference
. Параметр DestinationPath указывает расположение архивного файла. Архив Draft.zip
включает в себя корневой каталог Reference
, а также все его файлы и подкаталоги.
Пример 4. Сжатие каталога, исключающего корневой каталог
В этом примере сжимается каталог и создается архивный файл, который исключает корневом каталоге, так как пути использует подстановочный знак звездочки (*
). Архив содержит структуру каталогов, содержащую файлы и подкаталогы корневого каталога.
Compress-Archive -Path C:\Reference\* -DestinationPath C:\Archives\Draft.zip
Compress-Archive
использует параметр пути для указания корневого каталога, C:\Reference
со звездочкой (*
) подстановочным знаком. Параметр DestinationPath указывает расположение архивного файла. Архив Draft.zip
содержит файлы и вложенные каталоги корневого каталога. Корневой каталог Reference
исключен из архива.
Пример 5. Сжатие только файлов в корневом каталоге
В этом примере сжимаются только файлы в корневом каталоге и создаются архивные файлы. В архиве нет структуры каталогов, так как сжимаются только файлы.
Compress-Archive -Path C:\Reference\*.* -DestinationPath C:\Archives\Draft.zip
Compress-Archive
использует параметр Path для указания корневого каталога, C:\Reference
с подстановочным знаком star-dot- star (*.*
). Параметр DestinationPath указывает расположение архивного файла. Архив Draft.zip
содержит только файлы корневого каталога Reference
, а корневой каталог исключен.
Пример 6. Использование конвейера для архивации файлов
В этом примере файлы отправляются по конвейеру для создания архива. В архивном файле нет структуры каталогов, так как путь указывает только имена файлов.
Get-ChildItem -Path C:\Reference\Afile.txt, C:\Reference\Images\Bfile.txt |
Compress-Archive -DestinationPath C:\Archives\PipelineFiles.zip
Get-ChildItem
использует параметр пути для указания двух файлов из разных каталогов. Каждый файл представлен объектом FileInfo и отправляется по конвейеру в Compress-Archive
.
Два указанных файла архивируются в PipelineFiles.zip
.
Пример 7. Использование конвейера для архивации каталога
В этом примере каталог отправляется по конвейеру для создания архива. Файлы отправляются как объекты и каталоги FileInfoDirectoryInfo. Структура каталогов архива не включает корневой каталог, но его файлы и вложенные каталоги включаются в архив.
Get-ChildItem -Path C:\LogFiles |
Compress-Archive -DestinationPath C:\Archives\PipelineDir.zip
Get-ChildItem
использует параметр пути для указания корневого каталога C:\LogFiles
. Каждый объект FileInfo и DirectoryInfo отправляется по конвейеру.
Compress-Archive
добавляет каждый объект в архив PipelineDir.zip
. Параметр пути не указан, так как объекты конвейера получаются в положение параметра 0.
Пример 8. Как рекурсия может повлиять на архивы
В этом примере показано, как рекурсия может дублировать файлы в архиве. Например, если вы используете Get-ChildItem
с параметром Recurse. В процессе рекурсии каждый FileInfo и объект DirectoryInfo DirectoryInfo отправляется по конвейеру и добавляется в архив.
Get-ChildItem -Path C:\TestLog -Recurse |
Compress-Archive -DestinationPath C:\Archives\PipelineRecurse.zip
Каталог C:\TestLog
не содержит файлов. Он содержит подкаталог с именем testsub
, который содержит файл testlog.txt
.
Get-ChildItem
использует параметр пути для указания корневого каталога C:\TestLog
. Параметр Recurse обрабатывает файлы и каталоги. Объект DirectoryInfo создается для testsub
и объекта testlog.txt
.
Каждый объект отправляется по конвейеру в Compress-Archive
.
DestinationPath указывает расположение архивного файла. Параметр пути не указан, так как объекты конвейера получаются в положение параметра 0.
В следующей сводке описывается содержимое архива PipelineRecurse.zip
, содержащее повторяющийся файл:
- Объект DirectoryInfo создает каталог
testsub
и содержит файлtestlog.txt
, который отражает исходную структуру каталогов. - Объект FileInfo создает дубликат
testlog.txt
в корневом каталоге архива. Создается повторяющийся файл, так как рекурсия отправляет объект файла вCompress-Archive
. Это поведение ожидается, так как каждый объект, отправляемый по конвейеру, добавляется в архив.
Пример 9. Обновление существующего архивного файла
В этом примере обновляется существующий архивный файл Draft.zip
в каталоге C:\Archives
. В этом примере существующий архивный файл содержит корневой каталог и его файлы и вложенные каталоги.
Compress-Archive -Path C:\Reference -Update -DestinationPath C:\Archives\Draft.zip
Команда обновляет Draft.zip
с более новыми версиями существующих файлов в каталоге C:\Reference
и ее подкаталогах. И новые файлы, добавленные в C:\Reference
или его вложенные каталоги, включаются в обновленный архив Draft.zip
.
Параметры
-CompressionLevel
Указывает, сколько сжатия применяется при создании архивного файла. Для быстрого сжатия требуется меньше времени для создания файла, но может привести к большим размерам файлов.
Если этот параметр не указан, команда использует значение по умолчанию, Оптимальный.
Ниже приведены допустимые значения для этого параметра:
- самый быстрый. Используйте самый быстрый метод сжатия, доступный для уменьшения времени обработки. Быстрое сжатие может привести к большему размеру файлов.
- Без сжатия. Не сжимает исходные файлы.
- Оптимальный. Время обработки зависит от размера файла.
Свойства параметра
Тип: | String |
Default value: | Optimal |
Допустимые значения: | Optimal, NoCompression, Fastest |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
(All)
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-Confirm
Запрашивает подтверждение перед запуском cmdlet.
Свойства параметра
Тип: | SwitchParameter |
Default value: | False |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Aliases: | cf |
Наборы параметров
(All)
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-DestinationPath
Этот параметр является обязательным и указывает путь к выходному файлу архива. DestinationPath должен содержать имя архивированного файла, а также абсолютный или относительный путь к zippped-файлу.
Если имя файла в DestinationPath не имеет расширения имени файла .zip
, командлет добавляет расширение имени файла .zip
.
Свойства параметра
Тип: | String |
Default value: | None |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
(All)
Position: | 1 |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-Force
Используйте этот параметр для перезаписи существующего архивного файла.
Свойства параметра
Тип: | SwitchParameter |
Default value: | False |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
PathWithForce
Position: | Named |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
LiteralPathWithForce
Position: | Named |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-LiteralPath
Указывает путь или пути к файлам, которые требуется добавить в архивный zip-файл. В отличие от параметра Path, значение LiteralPath используется точно так же, как и введите его. Никакие символы не интерпретируются как подстановочные знаки. Если путь содержит escape-символы, заключите каждый escape-символ в одинарные кавычки, чтобы указать PowerShell не интерпретировать какие-либо символы как escape-последовательности. Чтобы указать несколько путей и включить файлы в несколько расположений в выходном zippped-файле, используйте запятые для разделения путей.
Свойства параметра
Тип: | String[] |
Default value: | None |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Aliases: | PSPath |
Наборы параметров
LiteralPathWithUpdate
Position: | Named |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | True |
Значение из оставшихся аргументов: | False |
LiteralPathWithForce
Position: | Named |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | True |
Значение из оставшихся аргументов: | False |
LiteralPath
Position: | Named |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | True |
Значение из оставшихся аргументов: | False |
-PassThru
Вызывает командлет выводить объект файла, представляющий созданный архивный файл.
Этот параметр появился в PowerShell 6.0.
Свойства параметра
Тип: | SwitchParameter |
Default value: | False |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
(All)
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-Path
Указывает путь или пути к файлам, которые требуется добавить в архивный zip-файл. Чтобы указать несколько путей и включить файлы в несколько расположений, используйте запятые для разделения путей.
Этот параметр принимает подстановочные знаки. Подстановочные знаки позволяют добавлять все файлы в каталог в архивный файл.
Использование подстановочных знаков с корневым каталогом влияет на содержимое архива:
- Чтобы создать архив, который включает корневой каталог, а также все его файлы и вложенные каталоги, укажите корневой каталог в пути без подстановочных знаков. Например:
-Path C:\Reference
- Чтобы создать архив, который исключает корневом каталоге, но zips всех его файлов и подкаталогов, используйте подстановочный знак звездочки (
*
). Например:-Path C:\Reference\*
- Чтобы создать архив, который архивирует только файлы в корневом каталоге, используйте подстановочный знак
*.*
star. Подкаталоги корневого каталога не включены в архив. Например:-Path C:\Reference\*.*
Свойства параметра
Тип: | String[] |
Default value: | None |
Поддерживаются подстановочные знаки: | True |
DontShow: | False |
Наборы параметров
Path
Position: | 0 |
Обязательно: | True |
Значение из конвейера: | True |
Значение из конвейера по имени свойства: | True |
Значение из оставшихся аргументов: | False |
PathWithUpdate
Position: | 0 |
Обязательно: | True |
Значение из конвейера: | True |
Значение из конвейера по имени свойства: | True |
Значение из оставшихся аргументов: | False |
PathWithForce
Position: | 0 |
Обязательно: | True |
Значение из конвейера: | True |
Значение из конвейера по имени свойства: | True |
Значение из оставшихся аргументов: | False |
-Update
Обновляет указанный архив, заменив старые версии файлов в архиве более новыми версиями файлов с одинаковыми именами. Этот параметр также можно добавить для добавления файлов в существующий архив.
Свойства параметра
Тип: | SwitchParameter |
Default value: | False |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
PathWithUpdate
Position: | Named |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
LiteralPathWithUpdate
Position: | Named |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-WhatIf
Показывает, что произойдет, если командлет будет запущен. Командлет не выполняется.
Свойства параметра
Тип: | SwitchParameter |
Default value: | False |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Aliases: | wi |
Наборы параметров
(All)
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
CommonParameters
Этот командлет поддерживает общие параметры: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction и -WarningVariable. Дополнительные сведения см. в разделе about_CommonParameters.
Входные данные
String
Можно передать строку, содержащую путь к одному или нескольким файлам.
Выходные данные
None
По умолчанию этот командлет не возвращает выходные данные.
FileInfo
При использовании параметра PassThru этот командлет возвращает объект FileInfo.
Примечания
Использование рекурсии и отправки объектов вниз конвейера может дублировать файлы в архиве. Например, если вы используете Get-ChildItem
с параметром Recurse, каждый FileInfo и объект DirectoryInfo DirectoryInfo, который отправляется вниз конвейера, добавляется в архив.
Командлет Compress-Archive
использует кодировку UTF-8. Другие средства ZIP-архива могут использовать другую схему кодирования. При извлечении файлов с именами файлов, не хранящихся в кодировке UTF-8, Expand-Archive
использует необработанное значение, найденное в архиве. Это может привести к тому, что имя файла отличается от имени исходного файла, хранящегося в архиве.