Хорошо, работаю над этим часами и исследую как сумасшедший, но все еще не получаю что-то для работы. Мне нужен объект string[]
, созданный из get-childitem
для передачи в параметр Copy-Item
-exclude
.
Препятствие в том, что мне нужно выполнить рекурсию и иметь относительные пути, так что это то, чтоЯ придумал:
$((Get-ChildItem -Path $Dest -Recurse -File).FullName.TrimStart($Dest))
Это приводит к чистому списку существующих файлов в $dest
, которые представлены с относительным путем к $dest
. Проблема в том, что если я добавлю это к параметру copy-item
-exclude
, то, похоже, его проигнорирует. Дальнейшие онлайн-исследования показывают, что copy-item
будет игнорировать параметр -exclude
, если он не относится к типу string[]
.
Если я проверю тип, возвращенный вышеуказанной командой, я получу System.Object[]
. Я ожидаю, что это будет System.String[]
или просто String[]
.
Как преобразовать вывод вышеуказанной команды в строковый массив?
ПолныйКоманда, использующая copy-item
, для ясности:
Copy-Item -Path (Join-Path $src "*") -Destination $dest -Recurse -Force -Exclude $((Get-ChildItem -Path $Dest -Recurse -File).FullName.TrimStart($Dest))
Моя конечная цель - рекурсивное копирование файлов без перезаписи существующих файлов.