Почему Powershell v2 Copy-Item копирует каталог, а не отдельные элементы?

Я новичок в Powershell и выполняю довольно простой скрипт для копирования файлов из сети на мой локальный компьютер.

$htmPath = "\\ServerPath\foo\WebHelp\"
$dstPath = "C:\LocalPath\foo\WebHelp\"
Copy-Item $htmPath $dstPath -recurse -force

Тем не менее, все мои данные попадают в C:\LocalPath\foo\WebHelp\Webhelp\; похоже, что моя копия создает новый экземпляр WebHelp каталог вместо копирования содержимого. Это нормально? Почему это счастливее? Как мне нужно изменить мой сценарий, чтобы ТОЛЬКО скопировать содержимое папки, а не имя папки?

Например, если я только хочу скопировать files НЕ \WebHelp\files от \\serverpath\foo\WebHelp\files, Я был неудачным с различными итерациями добавления или удаления концовки \ и используя copy вместо copy-item, Каков правильный синтаксис, чтобы исключить добавление имени родительской папки к пути во время копирования?

2 ответа

Первый: переключатель -WhatIf может отображать вашу информацию в целях тестирования о копировании.

Второе: при копировании каталога не нужно делать файл на файл. если вы хотите перейти файл на файл, вы можете использовать $htmPath\* чтобы получить дочерние предметы. Или же Get-ChildItem

Вы можете выбрать свой dstPath для "C:\LocalPath\foo\"

Существуют различные параметры, которые можно использовать для получения разных результатов при копировании из одной папки в другую.

$htmPath = "\\ServerPath\foo\WebHelp\"
$dstPath = "C:\LocalPath\foo\WebHelp\"
Copy-Item $htmPath $dstPath -recurse -force

Ваш код явно выбирает папку пути htm и ее файлы / подпапки для копирования в путь назначения.

Copy-Item $htmPath\* $dstPath -recurse -force

Изменение вашего пути от конца к \* я получу, как я полагаю, желаемый результат копирования файлов пути и вложенных папок htm в путь назначения.

Если вы хотите, чтобы файлы, а не подпапки, удалите -recurse,

Подробнее о копировании из одного места в другое читайте здесь. Информация команды Copy-Item здесь.

Другие вопросы по тегам