Наш процесс сборки приводит к набору .zip-файлов, таких как ComponentA-1.2.3.4.zip
, где 1.2.3.4 - номер сборки. Этот файл, в свою очередь, содержит папку ComponentA-1.2.3.4
, которая имеет фактические артефакты в структуре папок. Я пишу сценарий powershell, который извлекает артефакты и отправляет их на сервер для развертывания, и необходимо разместить структуру ниже верхнего уровня на сервере. Итак, предполагая эту структуру: ComponentA-1.2.3.4.zip\ComponentA-1.2.3.4\{Web,Lib,Bin}
, мне нужно извлечь папки Web, Lib и Bin.Скопируйте файлы из каталога в zip-файл
Я копирую файлы, используя этот метод в настоящее время
$shellApplication = new-object -com shell.application
$zipPackage = $shellApplication.NameSpace($zipfilename)
$destinationFolder = $shellApplication.NameSpace($destination)
$destinationFolder.CopyHere($zipPackage.Items())
Я пытался манипулировать $zipPackage.Items()
объект, но получаю ошибки о файле не exising. Объект выглядит в отладчике:
>>> $ZipPackage.Items()
Application : System.__ComObject
Parent : System.__ComObject
Name : ComponentA-1.2.3.4
Path : D:\Release\1.2.3.4\ComponentA-1.2.3.4.zip\ComponentA-1.2.3.4
GetLink :
GetFolder : System.__ComObject
IsLink : False
IsFolder : True
IsFileSystem : False
IsBrowsable : False
ModifyDate : 2012-02-27 17:30:34
Size : 0
Type : File Folder
Просто ни о чем я привести Cannot find path 'D:\release\1.2.3.4\System.__ComObject' because it does not exist
.
Мне не нужно будет извлекать файл в какое-то временное место, просто чтобы спуститься на один шаг, но я не понимаю, как это сделать?
Я в конечном итоге просто призывающий 7zip - оказывается, что эффективность экстракции была бездонной (несколько kB/sec), используя метод, который я попытался сделать выше. – carlpett