Почему 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 здесь.