从数组复制文件列表

时间:2018-02-08 17:12:10

标签: powershell

我尝试使用-like运算符匹配文件名,然后将与Copy-Item匹配的文件复制到新目录:

声明文件列表:

$files = "File1", "File2", "File3"
$sourceFolder = Get-ChildItem 'C:\source'

Name属性匹配文件:

$filesToCopy = @()
foreach ($file in $files) {
    $filesToCopy += $sourceFolder | Where-Object {$_.Name -like "$file*"} | Select FullName
}

最后将文件复制到目的地:

foreach ($file in $filesToCopy) {
    Copy-Item $file -Destination 'C:\destination'
}

最后一部分返回错误:Copy-Item : Cannot find drive. A drive with the name '@{FullName=C' does not exist.

$filesToCopy的输出:

FullName
--------
C:\source\file1.txt
C:\source\file2.txt
C:\source\file3.txt

我做错了什么? FullName似乎导致了一个问题。

1 个答案:

答案 0 :(得分:2)

$ filesToCopy(因此$ file)是一个具有FullName属性的对象,因此您需要引用该属性才能正确使用它:

foreach ($file in $filesToCopy) {
    Copy-Item $file.FullName -Destination 'C:\destination'
}