我试图理解 Powershell,但发现有些东西不太直观。我的理解是,在管道中传递对象,而不是传统的文本。 $_ 指的是管道中的当前对象。那么,为什么以下不起作用:
get-date|Write-Host "$_"
错误消息是:
Write-Host:输入对象无法绑定(bind)到命令的任何参数,因为该命令不接受管道输入或输入及其属性不匹配 h 接受管道输入的任何参数。 行数:1 字符:10 + 获取日期|写入主机 $_ + ~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (10-9-2014 15:17:00:PSObject) [Write-Host], ParameterBindingException +FullyQualifiedErrorId:InputObjectNotBound,Microsoft.PowerShell.Commands.WriteHostCommand
最佳答案
$_
是管道中当前的单个项目。要编写管道中的每个项目,您需要编写
get-data | foreach { Write-Host $_ }
或者缩写形式
get-data |% { Write-Host $_ }
从概念上讲,Foreach 是一个 cmdlet,它接收函数参数、管道输入并将函数应用于管道的每个项目。您不能只使用 $_
编写代码 - 您需要有一个函数明确声明它同意接收管道输入
关于powershell - get-date|Write-Host($_) 在概念上有什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25766438/