Выход, перенаправленный из Get-ChildItem в Compress-Archive, не архивирует все файлы / сохраняет структуру папок - PullRequest
0 голосов
/ 01 марта 2019
GetChildItem "C:\foo\bar" -Recurse -File | where { $_.Name -notmatch '[a-zA-Z_0-9^0-9]*(.pl|.xap|.go|.zip|.py|.tar|.gz|.tgz)' } | Compress-Archive -DestinationPath "C:\archive\xyz.zip"

Когда я выполняю команду GetChildItem без перенаправления вывода, команда возвращает именно то, что мне нужно.Однако когда я перенаправляю вывод в Compress-Archive, этот командлет не сохраняет структуру каталогов (все файлы архивируются в корне) \bar и не включает все файлы, когда команда GetChildItem выполняется изолированно.

Буду признателен за любой вклад.Обычно я использую команды Unix Shell, однако я ограничен моей средой.

Обновление (3/4/19):

GetChildItem "C:\foo\bar" -Recurse | where { $_.Name -notmatch '[a-zA-Z_0-9^0-9]*(.pl|.xap|.go|.zip|.py|.tar|.gz|.tgz)' } | Compress-Archive -DestinationPath "C:\archive\xyz.zip"

Удаление переключателя / аргумента -Fileустраняет проблему структуры папок, но файлы, которые я хочу игнорировать в переключателе -notmatch, больше не игнорируются.В следующем примере:

/archive
    -/a
       -file.pl
    -/b
       -file.py
       -file1.html
    -index.html
    -some_junk.zip

Эта команда выдаст следующий вывод:

VERBOSE: Preparing to compress...
VERBOSE: Performing the operation "Compress-Archive" on target "
C:\archive\a
C:\archive\b".
VERBOSE: Adding 'C:\archive\a\file.pl'.
VERBOSE: Adding 'C:\archive\b\file.py'.
VERBOSE: Adding 'C:\archive\b\file1.html'.
VERBOSE: Adding 'C:\archive\index.html'.
VERBOSE: Adding 'C:\archive\some_junk.zip'.

В этом случае файлы .py, .zip и .pl включаются в.zip

...