Write-Output

将指定的对象写入管道。

语法

Write-Output
     [-InputObject] <PSObject[]>
     [-NoEnumerate]
     [<CommonParameters>]

说明

将指定的对象写入管道。 如果 Write-Output 是管道中的最后一个命令,则这些对象将在控制台中显示。

Write-Output 将对象发送到主管道,这也称为成功流。 若要将错误对象发送到错误流,请使用 Write-Error

此 cmdlet 通常在脚本中使用,以在控制台上显示字符串和其他对象。 Write-Output 的内置别名之一是 echo,与使用 echo 的其他 shell 类似。 默认行为是在管道末尾显示输出。 在 PowerShell 中,在默认显示输出的实例中通常不需要使用 cmdlet。 例如,Get-Process | Write-Output 等效于 Get-Process。 或者,echo "Home directory: $HOME" 可以编写成 "Home directory: $HOME"

默认情况下,Write-Output 枚举集合中的对象。 不过,Write-Output 还可以使用 NoEnumerate 参数将集合作为单个对象沿管道传递

示例

示例 1:获取对象并将其写入控制台

在此示例中,Get-Process cmdlet 的结果存储在 $P 变量中。 Write-Output cmdlet 将 $P 中的进程对象显示到控制台。

$P = Get-Process
Write-Output $P

示例 2:将输出传递给另一个 cmdlet

此命令通过管道将“test output”字符串传递给 Get-Member cmdlet,后者将显示 System.String 类的成员,从而演示通过管道传递了该字符串

Write-Output "test output" | Get-Member

示例 3:抑制输出中的枚举

此命令将添加 NoEnumerate 参数以将集合或数组视为通过管道传递的单个对象

Write-Output 1,2,3 | Measure-Object

Count    : 3
...

Write-Output 1,2,3 -NoEnumerate | Measure-Object

Count    : 1
...

参数

-InputObject

指定要通过管道向下发送的对象。 输入一个包含对象的变量,或键入可获取对象的命令或表达式。

类型:PSObject[]
Position:0
默认值:None
必需:True
接受管道输入:True
接受通配符:False

-NoEnumerate

默认情况下,Write-Output cmdlet 始终枚举其输出。 NoEnumerate 参数取消显示默认行为,并阻止 Write-Output 枚举输出。 如果将命令括在括号中,则 NoEnumerate 参数不起作用,因为括号会强制枚举。 例如,(Write-Output 1,2,3) 仍会枚举数组。

NoEnumerate 参数仅在管道中有用。 不适合在控制台中查看 NoEnumerate 的效果,因为 PowerShell 将 Out-Default 添加到每个命令行的末尾,这会导致枚举。 但是,如果将 Write-Output -NoEnumerate 通过管道传送到另一个 cmdlet,则下游 cmdlet 会接收集合对象,而不是集合的枚举项。

重要

Windows PowerShell 中的此开关存在一个问题,该问题已在 PowerShell 6.2 及更高版本中得到修复。 使用 NoEnumerate 并显式使用 InputObject 参数时,该命令仍会枚举。 若要解决此问题,请按位置传递 InputObject 参数

类型:SwitchParameter
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

输入

PSObject

可以通过管道将对象传递给此 cmdlet。

输出

PSObject

此 cmdlet 返回作为输入提交的对象。

备注

Windows PowerShell 包含 Write-Output 的以下别名:

  • echo
  • write