如何在PowerShell中使用Echo命令

7,759 阅读2分钟

echo命令用于在控制台打印变量或字符串。echo命令在Windows PowerShell脚本语言中有一个别名叫 "Write-Output"。在PowerShell中,你可以使用 "echo"和 "Write-Output",这将提供相同的输出。PowerShell中echo命令的语法如下。

语法。

echo "…"

上面给出的语法将打印写在双引号内的所有内容。如果你已经声明了一个变量并想打印它的值,在双引号内输入该变量,它的值就会被显示。但是,如果你在echo命令中使用单引号,将只显示变量名称而不是它的值。

本文将详细介绍PowerShell cmdlet "Write-Output"以及 "Write-Host"、"echo"和 "Write-Output"的区别。

首先,我们将从PowerShell的以下三个命令之间的区别开始。Write-Host、Write-Output和Echo。

Echo、Write-Host和Write-Output之间的区别

在PowerShell中,echo和Write-Host产生同样的输出。然而,Write-Host与echo命令和Write-Output cmdlet在返回值给PowerShell引擎方面有所不同。Write-Output是作为echo命令的别名来使用的。你可以执行下面的命令来获得echo命令的 "别名"。

> Get-Command echo

不同的是,"Write-Host"只在主机上写,不向PowerShell引擎返回任何值。相反,"Write-Output"在屏幕上写,并将内容返回给 "PowerShell"引擎。我们将用例子解释 "Write-Output"、"Echo"和 "Write-Host"的区别。

例子1

我们创建了一个名为 "printcmdlet"的PowerShell脚本,并在其中编写了代码。我们创建了一个函数 "difference",并分别使用标志"-ForegroundColor"和"-BackgroundColor"来指定文本颜色和背景颜色。你可以看到,我们将 "difference"函数与所有三个打印命令 "echo"、"Write-Output"和 "Write-Host "连接起来。

function difference
{

    process {Write-Host $_ -ForegroundColor yellow -BackgroundColor black}

}

echo "this is a test" | difference

Write-Host "this is a test" | difference

Write-Output "this is test" | difference

Write-Host "this is a test" -ForegroundColor black -BackgroundColor White

下面给出了代码的脚本视图。

要运行该脚本,请跳转到你保存该脚本的目录。一旦你到了那里,写上".",这个符号会打开一个下拉菜单,显示目录中的所有文件。找到你的脚本,一旦它被加载,就按 "F5"来运行。

注意:"echo"和 "Write-Output"已经获取了该功能。然而,"Write-Host"却未能做到。你必须改变 "Write-Host"的特性,就像我们在脚本的第8行所做的那样。

例子2

我们将解释另一个例子,它将阐明 "echo"、"Write-Host"和 "Write-Output"之间的区别。

我们创建了三个脚本,分别命名为PO_Host、PO_Out和PO_echo,分别代表 "Write-Host"、"Write-Output"、"echo"。在这些脚本中,我们创建了一个变量,"Get-Command"cmdlet被保存在其中。Get-Command"命令被用来打印系统中所有的别名、函数和PowerShell cmdlet。

写入-主机

写入-输出

回音

例子1显示,只有 "Write-Host"没有管道功能,而在例子2中,Write-Host cmdlet提供了结果,但不符合顺序。上述例子中解释的区别描述了 "echo"和 "Write-Host"可以交替使用,但 "Write-Host"只有在你想在控制台获得输出时才可以使用。

Echo在PowerShell中的使用

echo命令用于在PowerShell ISE的输出控制台上显示输出。

例如,你想用PowerShell中的echo命令来打印 "Hello World"。首先,创建一个PowerShell脚本,我们将其命名为 "hello.ps1"。打开该脚本,并写下以下代码。

> echo "Hello World"

echo命令也可以用来将输出传递给另一个PowerShell cmdlet。下面的代码将把 "传递输出"字符串传递给另一个PowerShell cmdlet,"Get-Member"。

> echo "pass output" | Get-Member

该命令将显示PowerShell的System.String类的成员。这意味着字符串已经通过了管道。

然而,在PowerShell中,我们还可以使用echo命令进行其他多种操作,比如使用参数按照你的要求来操作输出。

Echo支持各种参数,如下图所示。在 "PowerShell ISE"的脚本窗格中输入 "Write-Output",然后输入连字符(-)。一个下拉菜单将被激活,其中包含支持的参数。

例如,echo/Write-Output命令将输出打印成一个单独的表达式。参数**-NoEnumerate**可以帮助你获得echo命令中使用的术语的单一计数。

让我们借助于一个例子来解释这个参数。

我们取了三个整数,并在PowerShell脚本中使用 "echo"打印了它们:我们正在使用PowerShell cmdlet "Measure-Object"。这个PowerShell cmdlet将计算echo命令中使用的表达式的总数,它将返回3作为计数。如果我们使用"-NoEnumerate",那么它将在计数区域显示1。我们将解释使用"-NoEnumerate"和不使用"-NoEnumerate"的情况。

不使用-NoEnumerate

$int1=3

$int2=5

$int3=7

echo $int1, $int2, $int3 | Measure-Object

下面的图片显示了脚本窗格和脚本的输出。

用-NoEnumerate

$int1=3

$int2=5

$int3=7

echo $int1, $int2, $int3 -NoEnumerate | Measure-Object

结论

像其他脚本语言一样,PowerShell支持echo命令来打印任何写在双引号内的东西。此外,PowerShell中还有其他的打印命令。Write-OutputWrite-Host。echo和Write-Output有相同的工作程序,而Write-Host则与两者不同。在本教程中,我们对PowerShell中的echo命令进行了简单的解释。此外,我们还提供了 "Write-Host"、"Write-Output"和 "echo"之间的明确区别,以了解哪条命令适合你。