获取要在PowerShell中复制的文件列表

获取要在PowerShell中复制的文件列表,powershell,copy-item,Powershell,Copy Item,我正在使用PowerShellCopy Item命令将包含文件的目录复制到另一个位置 我想在控制台上显示正在被复制的所有文件,以便了解复制命令的状态。如果您只想在控制台中看到,请使用-verbose开关: $source=ls c:\temp *.* $i=1 $source| %{ [int]$percent = $i / $source.count * 100 Write-Progress -Activity "Copying ... ($percent %)" -statu

我正在使用PowerShell
Copy Item
命令将包含文件的目录复制到另一个位置


我想在控制台上显示正在被复制的所有文件,以便了解复制命令的状态。

如果您只想在控制台中看到,请使用
-verbose
开关:

$source=ls c:\temp *.*
$i=1
$source| %{
    [int]$percent = $i / $source.count * 100
    Write-Progress -Activity "Copying ... ($percent %)" -status $_  -PercentComplete $percent -verbose
    copy $_.fullName -Destination c:\test 
    $i++
}
copy-item -path $from -destination $to -verbose
如果要获取文件或目录列表,请执行以下操作:

$files = copy-item -path $from -destination $to -passthru | ?{$_ -is [system.io.fileinfo]}

我建议这样做:

(Copy-Item -Verbose C:\SrcDir\*.* c:\DstDir 4>&1).Message

在这里,消息被发送到输出流/管道,而不是详细的流/管道,因此将更普遍地工作,例如在TFS任务脚本中。

这可能很有用-另一种测试项目是否为文件的方法是使用
?{!$\u.PSIsContainer}
。此外,在V3中,您可以执行此操作,
$files=将项$from$复制到-verbose 4>&1
“-verbose”工作正常。非常感谢。可惜它不在文档中。
-Verbose
报告了大量额外信息,有没有办法告诉它只输出复制文件的名称?这是一个非常好的解决方案,但不是我真正需要的。上述解决方案稍微简单一点。