极客学校:在powershell中学习格式化、过滤和比较

在这个版本的Geek School中,我们将研究格式化、过滤和比较管道中的对象。...

极客学校:在powershell中学习格式化、过滤和比较

在这个版本的Geek School中,我们将研究格式化、过滤和比较管道中的对象。

请务必阅读本系列之前的文章:

  • 了解如何使用PowerShell自动化Windows
  • 学习在PowerShell中使用cmdlet
  • 学习如何在PowerShell中使用对象

整个星期请继续关注本系列的其余部分。

默认格式

当我刚开始使用PowerShell时,我认为一切都很神奇,但事实上,了解引擎盖下的情况只需要一点时间。PowerShell格式化系统也是如此。实际上,如果运行Get-Service cmdlet,则生成的输出仅显示3个属性:Status、Name和DisplayName。

极客学校:在powershell中学习格式化、过滤和比较

但是如果通过管道Get Service来获取成员,您会看到ServiceController对象不仅仅具有这三个属性,那么会发生什么呢?

极客学校:在powershell中学习格式化、过滤和比较

答案就在一个隐藏文件中,该文件定义了大多数内置cmdlet如何显示其输出。要获得理解,请在shell中键入以下内容并按enter键。

notepad C:\Windows\System32\WindowsPowerShell\v1.0\DotNetTypes.format.ps1xml

如果使用notepad的Find函数,我们可以通过搜索ServiceController类型,快速跳到详细说明Get-Service cmdlet输出的部分。

极客学校:在powershell中学习格式化、过滤和比较

突然,您可以看到引擎盖下的PowerShell正在格式化管道中ServiceController类型的任何对象,并创建一个包含三列的表:Status、Name和DisplayName。但是,如果您处理的类型在该文件或任何其他格式文件中没有条目,该怎么办?那么,其实很简单。如果来自管道的对象具有5个或更多属性,则PowerShell将在列表中显示该对象的所有属性;如果该对象的属性少于5个,则将在表中显示这些属性。

格式化数据

如果您对对象或类型的默认格式不满意,可以使用自己的格式。要做到这一点,您需要知道三个cmdlet。

  • 格式列表
  • 设置表格格式
  • 宽格式

极客学校:在powershell中学习格式化、过滤和比较

Format-Wide只是获取对象的集合,并显示每个对象的单个属性。默认情况下,它将查找name属性;如果对象不包含name属性,则在按字母顺序对属性排序后,它将使用对象的第一个属性。

Get-Service | Format-Wide

极客学校:在powershell中学习格式化、过滤和比较

如您所见,它也默认为两列,不过您可以指定要使用的属性以及要显示的列数。

Get-Service | Format-Wide -Property DisplayName -Column 6

极客学校:在powershell中学习格式化、过滤和比较

如果默认情况下某个内容被格式化为表,则始终可以使用Format-list cmdlet将其切换到列表视图。让我们看一下Get-processcmdlet的输出。

极客学校:在powershell中学习格式化、过滤和比较

这个表格视图实际上非常适合这种信息,但是让我们假设我们想以列表形式查看它。我们真正要做的就是用管道把它格式化。

Get-Process | Format-List

极客学校:在powershell中学习格式化、过滤和比较

如您所见,默认情况下,列表中只显示四个项目。要查看对象的所有属性,可以使用通配符。

Get-Process | Format-List –Property *

极客学校:在powershell中学习格式化、过滤和比较

或者,您可以只选择所需的属性。

Get-Process | Format-List –Property name,id

极客学校:在powershell中学习格式化、过滤和比较

另一方面,Format Table获取数据并将其转换为表。由于Get进程中的数据已经是表的形式,因此我们可以使用它轻松地选择要显示在表中的属性。我使用AutoSize参数使所有的数据都适合一个屏幕。

Get-Process | Format-Table name,id –AutoSize

极客学校:在powershell中学习格式化、过滤和比较

过滤和比较

使用基于对象的管道最好的一点是,您可以在任何阶段使用Where-object cmdlet从管道中过滤对象。

Get-Service | Where-Object {$_.Status -eq “Running”}

极客学校:在powershell中学习格式化、过滤和比较

使用where对象实际上非常简单。$\表示当前管道对象,您可以从中选择要筛选的属性。在这里,我们只保留Status属性等于Running的对象。在筛选脚本块中可以使用几个比较运算符:

  • 等式(等于)
  • neq(不等于)
  • gt(大于)
  • ge(大于或等于)
  • lt(小于)
  • le(小于或等于)
  • like(通配符字符串匹配)

可以在about\u概念帮助文件中查看完整列表和更多信息,但是要习惯Where对象语法确实需要一些时间。这次就这些了!

  • 发表于 2021-04-11 22:58
  • 阅读 ( 197 )
  • 分类:互联网

你可能感兴趣的文章

可提高windows管理技能的powershell cmdlet

Powershell是一个完美的方式,一个新的编码器开始在Windows上。Powershell是命令行工具和脚本语言的等价部分。它使您能够通过您用来管理计算机的相同命令使计算机自动化。如果您有一个现代的Windows系统,那么您已经有了Powershell...

  • 发布于 2021-03-13 13:26
  • 阅读 ( 288 )

8个最好的免费在线家庭学校数学课程

... 有了这些免费的在线家庭学校数学课程和资源,你可以给你的家庭教育孩子一个优秀的数学教育,而不花一分钱。 ...

  • 发布于 2021-03-29 10:28
  • 阅读 ( 251 )

如何在Windows10中自动连接到特定应用的vpn

使用Windows10的PowerShellcmdlet,您可以轻松地添加应用程序,以便在启动时自动触发VPN连接。自动化这个任务意味着当你使用某些应用程序时,你甚至不必考虑连接到VPN。 要利用PowerShell中的此功能,如果您还没有VPN服务,则必须...

  • 发布于 2021-04-02 15:58
  • 阅读 ( 521 )

如何在windows powershell中使用命令历史记录

Windows PowerShell具有内置的命令历史记录功能,可提供有关已运行命令的详细信息。与命令提示符一样,PowerShell只记住当前会话的命令历史记录。 如何使用命令行缓冲区 相关:极客学校:学习如何用PowerShell自动化Windows PowerShel...

  • 发布于 2021-04-08 03:50
  • 阅读 ( 283 )

如何从windows中的powershell管理windows的可选功能

...的Windows功能,但今天我们将向您展示如何在windows8中通过PowerShell命令行执行相同的操作。 从powershell管理windows可选功能 您首先要做的是查看您启用了哪些功能,为此,我们需要将Get-WindowsOptionalFeature cmdlet的输出传递到管道中...

  • 发布于 2021-04-08 19:45
  • 阅读 ( 112 )

如何在windows中批量重命名多个文件

...可以轻松地重命名一个或多个文件,但使用命令提示符或PowerShell,您还可以执行更多操作。再加上第三方重命名工具,可能性是无穷的。让我们看看每个选项及其工作原理。 在windows资源管理器中重命名多个文件 Windows资源管...

  • 发布于 2021-04-08 21:05
  • 阅读 ( 207 )

如何在windows上创建已安装程序的列表

....1和7上执行此操作的几种不同方法。 简单的方法:使用powershell命令 相关:极客学校:学习如何用PowerShell自动化Windows PowerShell是Windows中最强大的工具之一,所以它当然可以做一些简单的事情,比如列出你安装的程序。事实上...

  • 发布于 2021-04-09 18:20
  • 阅读 ( 179 )

powershell与windows命令提示符的区别

Windows7增加了PowerShell,一种比命令提示符更强大的命令行shell和脚本语言。自Windows7以来,PowerShell变得更加突出,它甚至成为Windows10的默认选择。 PowerShell比传统的命令提示符更复杂,但它也更强大。命令提示符明显不如Linux和...

  • 发布于 2021-04-11 20:41
  • 阅读 ( 281 )

极客学校:写你的第一个完整的powershell脚本

...的计算机上一次启动的时间。在上一次安装Geek School for PowerShell时,我们将编写一个可重用的PowerShell命令来完成同样的任务。 请务必阅读本系列之前的文章: 了解如何使用PowerShell自动化Windows 学习在PowerShell中使用cmdlet 学习如...

  • 发布于 2021-04-11 22:17
  • 阅读 ( 159 )

极客学校:学习如何扩展powershell

PowerShell为您提供了两种扩展shell的方法。您可以使用管理单元,它是二进制的,并且是用成熟的编程语言(如C#)开发的,也可以使用模块,它可以是二进制的,也可以是基于脚本的。 请务必阅读本系列之前的文章: 了解如何...

  • 发布于 2021-04-11 22:25
  • 阅读 ( 230 )
ju543251806
ju543251806

0 篇文章

相关推荐