2015-11-17 2 views
-1

Я занят созданием сценария PowerShell, где папка должна быть скопирована в другую папку в составе скрипта. Для этого я хотел бы использовать стандартный интерфейс копирования Windows и использовать подсказки и варианты, такие как «В этом месте уже есть файл с тем же именем». «Вы хотите объединить эту папку», «Сделать это для всех "и т. д., а не программировать все это сам.Вызвать копию Windows из PowerShell

я исследовал в целях направления:

  • Используя метод IFileOperation::CopyItem как, например, HowTo: Display progress dialog using IFileOperation, но я мог бы найти какое-либо представление о том, как встроить его в PowerShell
  • Используя Verbs() Copy/Paste, но хотя пример Invoke-FileSystemVerb -Path "C:\TestDir -Verb Cut; Invoke-FileSystemVerb -Path "\\server\share" -Verb Paste” предлагает другое, я могу вставлять файлы, которые были скопированы/вырезаны вручную, но не удалось скопировать/вырезать файлы с помощью CmdLet или просто используя метод Verb.DoIt() (я подозреваю это по соображениям безопасности).
  • Имитировать перетаскивание?

Но не найдено ни одного рабочего решения. Любое предложение, как это сделать от PowerShell?

ответ

3

Я использую это для извлечения из ZIP файлов, которые, кажется, придумать все подсказки и прогресс бар:

$shell = New-Object -Com Shell.Application 
$folder = $shell.NameSpace(“$path\Folder”) 
$shell.NameSpace($otherpath).CopyHere($folder) 
+0

Спасибо, я LonKing такого решения в течение нескольких часов, и это, кажется, действительно сделать трюк , – iRon

+0

Вместо цикла 'ForEach' лучше скопировать все элементы сразу:' .CopyHere ($ zip.items()) 'this также покажет« _Do this for all_ »для корневых элементов. – iRon

+0

Я скорректировал его, чтобы скопировать всю папку, а не ее содержимое, что намного опережает IMO (если вы не хотите только копировать содержимое) –

Смежные вопросы