当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] PowerShell 尾巴 |检索指定的行数

作者:精品下载站 日期:2024-12-14 04:48:43 浏览:15 分类:玩电脑

PowerShell 尾巴 |检索指定的行数


[玩转系统] PowerShell 尾巴 |检索指定的行数

PowerShell 尾部的定义

PowerShell tail 命令,它是 Unix 等效的 Tail 命令,被视为 PowerShell 的 Get-Content cmdlet 中的参数,它从文件内容的底部检索指定行数,并且可以等待下一个连续日志使用 -Wait 参数,它可以等待直到检索到新日志并将其显示在控制台上,或者可以使用管道将其保存到另一个日志文件中。

语法:

获取内容语法:

Get-Content
[-ReadCount <Int64>]
[-TotalCount <Int64>]
[-Tail <Int32>]
[-Path] <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-Force]
[-Credential <PSCredential>]
[-UseTransaction]
[-Delimiter <String>]
[-Wait]
[-Raw]
[-Encoding <FileSystemCmdletProviderEncoding>]
[-Stream <String>]
[<CommonParameters>]
Get-Content
[-ReadCount <Int64>]
[-TotalCount <Int64>]
[-Tail <Int32>]
-LiteralPath <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-Force]
[-Credential <PSCredential>]
[-UseTransaction]
[-Delimiter <String>]
[-Wait]
[-Raw]
[-Encoding <FileSystemCmdletProviderEncoding>]
[-Stream <String>]
[<CommonParameters>]

虽然对于 PowerShell tail 命令,我们不会使用整套命令,但我们需要特定的参数,例如 -Wait、-Tail 等。我们也可以最小化此命令,如下所示。

Get-Content -Path Filepath -Tail <int>

或者,

Get-Content -Path Filepath -Tail <int> -Wait

PowerShell Tail 等效命令 - Select-Object -Last

语法:

Get-Content -Path Filepath | Select-Object -Last <int>

描述:

Tail 命令在 Unix 语言中很流行,它用于从文档或日志文件的末尾检索特定的行数。 PowerShell 没有同名命令,但从 PowerShell v3.0 开始,PowerShell 在 Get-Content cmdlet 中添加了 -Tail 参数。

get-Content 命令对于检索文件的内容非常有用,无论它是脚本、日志文件、文本文件,并且使用 -Tail 参数我们可以检索从文件末尾开始的行数。例如,
我们想要检索 Servers.txt 文件的最后 2 行。首先,我们将检查 Servers.txt 的内容,以便更好地理解。

Get-Content C:\temp\Servers.txt

输出:

[玩转系统] PowerShell 尾巴 |检索指定的行数

Get-Content C:\temp\Servers.txt -Tail 2

输出:

[玩转系统] PowerShell 尾巴 |检索指定的行数

如果您的文件是不断更新的日志文件,例如监控日志、数据库日志、邮箱日志等,那么我们可以使用 -Wait 参数来等待指定文件的新输入并显示在屏幕上。我们将在示例部分看到这一点。

示例

让我们讨论 PowerShell Tail 的示例。

示例 #1:从文本文件中检索最后 5 行。

在此示例中,我们将 Azure 位置列表存储在文本文件 Locations.txt 中,并且需要该文件中的最后 5 个位置。所以我们将使用下面的命令。

Get-Content C:\Temp\locations.txt -Tail 5

输出:

[玩转系统] PowerShell 尾巴 |检索指定的行数

示例 #2:使用 Get-Content 别名读取文件并检索最后 5 行。

我们知道PowerShell可以在PS控制台中运行少数Unix和DOS命令,因为这些命令被用作PowerShell别名。例如,

Get-Alias cat

[玩转系统] PowerShell 尾巴 |检索指定的行数

因此,我们可以运行 Unix cat 命令而不是 Get-Content,它将支持 Get-Content 命令支持的所有参数。

cat C:\temp\locations.txt -Tail 5

输出:

[玩转系统] PowerShell 尾巴 |检索指定的行数

事实上,我们可以使用 Get-Content 命令支持的任何别名,并且可以使用 -Tail 参数选择几行。以下是支持的别名。

Get-Alias -Definition Get-Content

输出:

[玩转系统] PowerShell 尾巴 |检索指定的行数

在这里,我们可以使用 cat、gc 或 type 来代替 Get-Content 命令。我们可以将上面的例子写成:

type C:\temp\locations.txt -Tail 5

或者,

gc C:\temp\locations.txt -Tail 5

示例 #3:将 -Wait 和 -Tail 组合参数与 Get-Content 命令结合使用。

-Wait 参数使文件在 PowerShell 控制台中保持打开状态,直到控制台被 Ctrl+C 命令中断。它每秒检查文件是否有任何新更新,如果文件有新输入,则将其显示在控制台上。

在这个例子中,我们有一个名为processes.txt的文本文件,它有一个进程列表,每当任何新进程启动时它都会更新,并在屏幕上显示最后4个进程。

Get-Content C:\Temp\processes.txt -Tail 4 -wait

输出:

[玩转系统] PowerShell 尾巴 |检索指定的行数

现在,当新进程更新文件时,它们应该在控制台上显示输出。

[玩转系统] PowerShell 尾巴 |检索指定的行数

当您想要终止上述命令输出时,请按 Control+C。

示例 #4:使用带有 -Last 参数的 Select-Object 命令。

Get-Content 命令中的 -Tail 参数还有另一个替代选项,即在管道中使用带有 -Last 参数的 Select-Object,其工作方式与 Tail 命令类似。

获取内容 C:\Temp\locations.txt |选择对象-最后 5 个

输出:

[玩转系统] PowerShell 尾巴 |检索指定的行数

请注意:您可以使用 Select 别名而不是 Select-Object。

Select-Object 还具有 -First 参数,用于检索第一个指定的行,但这不能满足 Tail 命令的目的。

Select-Object 命令在使用 -Last 参数时比 Get-Content 命令中的 -Tail 参数更有帮助,因为 Get-Content 命令仅与文件一起使用,但如果我们想直接从命令检索最后几行那么 Tail 命令将没有帮助,但会在那里使用 Select-Object。

例如,我们需要检索最后 5 个服务的列表,然后我们可以使用 Select-Object 命令,如下所示。

Get-Service | Select -Last 5

输出:

[玩转系统] PowerShell 尾巴 |检索指定的行数

示例#5:在 Get-Content 命令中使用过滤器。

我们可以使用Where-Object命令来过滤特定的内容。例如,我们需要在locations.txt文件中,如果输入“East Us”区域,那么它应该显示输出。代码如下所示。

cat C:\Temp\locations.txt -Tail 1 -Wait | where{$_ -match "East US"}

输出:

[玩转系统] PowerShell 尾巴 |检索指定的行数

将美国东部输入到locations.txt 文件中后,

[玩转系统] PowerShell 尾巴 |检索指定的行数

结论

当我们处理文件的新内容时,PowerShell tail 命令非常有用,因为很多时候我们需要在屏幕上查看更新的日志并将新日志重定向到另一个存储位置,或者我们需要根据最近更新的文件采取操作。日志可以是监控日志、安全日志、数据库日志等。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯