В результате нашего процесса сборки получается несколько файлов .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.
Я сейчас копирую файлы, используя этот метод
$shellApplication = new-object -com shell.application
$zipPackage = $shellApplication.NameSpace($zipfilename)
$destinationFolder = $shellApplication.NameSpace($destination)
$destinationFolder.CopyHere($zipPackage.Items())
Я пытался манипулировать объектом $zipPackage.Items()
, но получаю ошибки об отсутствии файла.В отладчике объект выглядит следующим образом:
>>> $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
.
Я бы не хотел извлекать файл во какое-то временное место, чтобы просто пройти один шаг, но я не понимаю, как это сделать?