You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Get-ChildItem的输出可通过管道传递给Copy-Item执行?

关于PowerShell管道传值到Copy-Item的疑问解答

你遗漏了两个关键的PowerShell管道绑定细节:

  • FileSystemInfo对象的隐式字符串转换
    Get-ChildItem输出的System.IO.FileInfo对象,当PowerShell需要把它传给接受字符串类型的参数(比如Copy-Item的-Path)时,会自动调用对象的ToString()方法,而FileInfo的ToString()返回的就是文件的完整路径字符串,相当于直接把路径传给了-Path参数。

  • PSPath属性的自动绑定
    所有PowerShell的文件系统对象(包括FileInfo)都自带PSPath属性,这个属性存储的是PowerShell格式的完整路径(比如Microsoft.PowerShell.Core\FileSystem::C:\test\file.txt)。Copy-Item的-Path参数支持通过ByPropertyName绑定到PSPath属性——PowerShell会自动匹配对象的PSPath属性到-Path参数,这也是管道能生效的核心原因之一。

另外补充:Copy-Item的-Path参数本质上也支持直接接收FileSystemInfo类型的对象(FileInfo是它的派生类),所以也符合ByValue绑定的逻辑,只是参数定义里写的是string[],但PowerShell会自动处理兼容类型的隐式转换。你可以直接验证这一点:

$file = Get-ChildItem .\test.txt
Copy-Item -Path $file -Destination .\Wonderland\

内容的提问来源于stack exchange,提问作者The One

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 11:45:29