2014-05-07 7 views
0

Я пытаюсь написать сценарии powershell для поиска папки и ее подпапок для определенной папки из файла csv, а затем скопировать эту папку в другое место.Паттерны поиска Powershell для конкретной папки и копии

[CmdletBinding()] 
Param(
    [Parameter(Mandatory=$True,Position=1)] 
    [string]$filePath, 
    [Parameter(Mandatory=$True,Position=2)] 
    [string]$InstanceName 
) 

Import-CSV -Delim ',' -Path $filePath | ForEach-Object { 
    Get-ChildItem -Path D:\Folder\$InstanceName -Directory -Recurse 
    Copy-Item $_.FOLDERNAME d:\CopyFolder\$InstanceName -recurse 
} 

Это похоже на вечность и, очевидно, на ошибки, потому что файлов нет, когда он пытается скопировать. Есть ли способ использовать Copy-Item, если я не знаю конкретного пути? Или какой-нибудь другой альтернативный способ сделать это?

ответ

0

Пара вещей:

  • Вы можете использовать параметр -filter для поиска конкретной папки
  • Pipe результаты вашего Get-ChildItem, так что он только пытается сделать авторскими элемент, когда он находит в папке
  • Используйте свойство FullName при использовании -recurse параметра на Get-ChildItem, чтобы обеспечить полный путь к элементу всегда используются

    Import-CSV -Delim ',' -Path $filePath | ForEach-Object { 
        Get-ChildItem -Path D:\Folder\$InstanceName -Recurse -Directory -Filter $_.FOLDERNAME | ForEach-Object { 
         Copy-Item $_.FullName d:\CopyFolder\$InstanceName -Recurse 
        } 
    } 
    
+0

Я хочу скопировать папку и элементы в ней, а не файл. Вот почему я должен правильно использовать рекурсию? – Shawn

+0

@Shawn Да, извините, обновленный ответ. Заголовок заголовка CSV FILENAME содержит имена папок? Это немного вводит в заблуждение – Cole9350

+0

Извините, я изменил его. Спасибо за помощь. – Shawn

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

  • Нет связанных вопросов^_^