如何将PowerShell中Out-String的输出直接作为参数传递给Get-Content/cat?
错误原因
Get-Content(你使用的别名cat)的作用是读取指定路径的文件内容,仅支持接收文件路径或文件对象作为合法输入,你代码中管道传递的是格式化后的路径纯文本,无法匹配Get-Content的参数绑定规则。$input是PowerShell中ForEach-Object脚本块内的管道输入枚举器,不可直接作为参数传递给Get-Content,你的参数调用逻辑本身存在错误。- 你额外增加的
Format-Table、Out-String属于多余操作,你要实现的路径输出需求完全不需要用到这两个命令。
正确实现方案
不需要提前赋值变量,直接展开FullName属性即可实现你要的输出效果:
Get-ChildItem -Recurse -Filter "* *" -Force | ForEach-Object { (Get-ChildItem $_.FullName).FullName }
如果偏好纯管道写法,也可以用如下格式:
Get-ChildItem -Recurse -Filter "* *" -Force | ForEach-Object { Get-ChildItem $_ | Select-Object -ExpandProperty FullName }
补充说明:PowerShell中管道输出的字符串默认会直接打印到控制台,不需要像bash一样调用cat来输出标准输入内容,所以你原来的写法里完全不需要追加Get-Content相关的调用。
内容的提问来源于stack exchange,提问作者J.Todd
相关产品推荐
相关产品推荐

