学习一种新的计算机语言时,要做的第一件事就是学习如何进行输入和输出。我们从技巧“ link:/ windows-Introduction_to_PowerShell [PowerShell简介]”中学习了如何进行输出。如果您还记得的话,我们使用了Write-Output cmdlet。现在是时候学习如何读取文件并将其输出显示在屏幕上了。

假设我们有一个名为“ C:\ Temp \ Temp.txt”的文本文件,它包含十行。显示这些行的最简单方法是使用Get-Content cmdlet。这是对我们的文件运行此cmdlet的样子:(请参见图1。)

image

图1. Get-Content读取文件。

如果您只想显示文件的前三行怎么办?

有不同的方法可以做到这一点,但也许最直接的方法是使用变量。在PowerShell中,变量可以是任何数据类型,并且变量名称以“ $”开头。变量名的示例包括“ $ myName”,“ $ numbers”,“ $ today”等。您可以给变量赋一个带有“ =”符号的值,因此合法的PowerShell命令为

PS> $myName = 'Barry'

在此背景下,我们现在足够了解显示文件的前三行。我们将文件的内容分配给一个名为$ lines的变量,然后在前三行显示_its_ :(请参见图2。)

image

图2.使用变量。

在这里,我们将文件的内容分配给$ lines变量(实际上是一个数组),并使用语法[[0..2]”访问数组的元素0、1和2。元素0是第一行;元素1是第二行;元素2是第三行。

访问数组的最后几行一样容易。这是通过使用负下标来完成的,因此$ line [-1]是数组的最后一行; $ line [-2]是数组的倒数第二行;下图显示了如何显示文件的最后三行:(请参见图3。)

image

图3.使用负下标访问数组。

从文件中检索文本的另一种方法是搜索文本并显示结果。要在PowerShell中搜索文本,请使用Select-String cmdlet。 Select-String需要很多开关,如果您在cmdlet上寻求帮助,可以看到这些开关,但是简单的形式要求您仅指定文件名和所需的模式。因此,如果我想在文件中找到所有包含文本“ line”的行(将是每一行),则可以这样做:(请参见图4。)

image

图4.在文件中搜索模式。

Select-String非常强大,因为它使用正则表达式进行搜索。 (还有另一个标题为“正则表达式简介”的技巧。)因此,如果您想查找所有以“ l”开头并以一位数字结尾的行(即,除第10行之外的所有行),它看起来像此:(请参见图5。)

image

图5.使用正则表达式搜索文件。

我们已经讨论了很多有关读取文件的内容,因此我们应该通过编写文件来结束。当然,您可以使用熟悉的“>”

字符以将输出重定向到文件,但是在PowerShell中,您也可以使用Out-File cmdlet将输出发送到文件。

假设您要获取系统上所有活动进程的列表。用于执行此操作的cmdlet是Get-Process。 Get-Process的输出的一部分显示在这里:(参见图6。)

image

图6. Get-Process的部分输出。

请注意,最后一行的第八行被截断。该行以“ vmware-usbarbitrat …​”结尾。如果我们只是简单地将此输出发送到文件,则该文件也将包含此截断的行。取而代之的是,我们可以使用Out-File的“ -width”开关来指示我们想要更大的宽度,以避免截断。这是我们的命令,用于获取进程,将输出通过管道传输到Out-File并为输出指定宽度:

PS C:\Bat> Get-Process | Out-File C:\Temp\Temp2.txt -width 100

本技巧(13507)适用于Windows 7、8和10。