powershell - get-date|Write-Host($_) 在概念上有什么问题

标签 powershell

我试图理解 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/

相关文章:

PowerShell 接收与获取动词

不列出子目录的Powershell文件夹大小

powershell - 在Powershell中尝试过滤器的问题

powershell - 在Powershell中安装NServicebus服务时捕获错误

powershell - 使用 nupack 包管理器控制台将工作文件夹设置为解决方案文件夹

powershell - 如何获取传递给函数的所有参数(与仅可选的 $args)

function - 无法使用另一个函数中的一个函数的变量

windows - 如何使用 Powershell 创建以管理员身份运行快捷方式

powershell - 如何最初使用 PowerShell 向 CSV 文件添加 header

windows - Git命令行和批处理文件有不同的输出