Я заранее извиняюсь, если этот вопрос кажется странным, я впервые пытаюсь использовать powershell для чего-либо подобного.
У меня есть структура каталогов, подобная следующей:
DIR1/
bin/
obj/
d1-file1
d1-file2
DIR2/
bin/
obj/
d2-file1
d2-file2
DIR3/
bin/
obj/
d3-file1
d3-file2
Я пытаюсь сжать этот список каталогов набором исключений верхнего уровня и подуровня.Например, я хотел бы исключить определенный каталог верхнего уровня (например, DIR2), а также исключить определенные подкаталоги из окончательного набора результатов (например, bin, obj).
Я пробовалЕсть несколько разных подходов, но, к сожалению, когда я перебираю подкаталоги, команда compress-archive заархивирует элементы подуровня без сохранения структуры каталогов верхнего уровня.Я хотел бы сохранить структуру каталогов верхнего уровня в архиве, исключая при этом указанные подкаталоги.
$entries = New-Object System.Collections.Generic.List[System.Object]
# Get initial directory listing
$dirlist = Get-ChildItem $solutionFileLocation -ad -Exclude "DIR2" | ForEach-Object { $_.FullName }
# Exclude bin and obj directories and add entry path to our zip entry list
foreach ($dir in $dirlist)
{
$sub = Get-ChildItem $dir -Exclude "bin", "obj" | ForEach-Object { $_.FullName }
foreach ($itm in $sub)
{
$entries.Add($itm)
}
}
Compress-Archive -LiteralPath $entries -CompressionLevel Optimal -DestinationPath "C:\Filename01212019.zip"
В результате получается архив, содержащий следующее:
d1-file1
d1-file2
d3-file1
d3-file2
Вместо желаемого результата:
DIR1/
d1-file1
d1-file2
DIR3/
d3-file1
d3-file2