极客学校:学习如何在powershell中使用对象

理解对象是“获取”PowerShell的基本概念之一。加入我们,探索对象以及它们如何使PowerShell比目前任何其他shell都更好。...

极客学校:学习如何在powershell中使用对象

理解对象是“获取”PowerShell的基本概念之一。加入我们,探索对象以及它们如何使PowerShell比目前任何其他shell都更好。

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

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

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

物体

你有没有想过是什么让PowerShell与传统的Linux shell(比如Bash)甚至传统的命令提示符区别开来?答案很简单:传统的shell输出文本,这使得格式化和过滤等操作变得困难。当然,有一些工具可以帮助你完成这项工作(sed和grep在脑海中浮现),但归根结底,如果你想做任何繁重的文本解析,你需要知道正则表达式,比如你的手背。

PowerShell利用了底层的.Net框架,并采用了不同的方法,使用对象而不是文本。对象只是某个事物的表示。它们是使用它们的部件和动作的集合。让我们来看看自行车的零件以及如何使用它们。

极客学校:学习如何在powershell中使用对象

Net中的对象基本相同,只是有两个小区别:“部分”称为属性,“指令”称为方法。如果我们想将Windows服务表示为一个对象,我们可以决定使用三个属性来描述它:服务名称、状态和描述。我们还需要与服务交互,因此我们可以给对象一个Start、Stop和Pause方法。

极客学校:学习如何在powershell中使用对象

通过将对象传递给Get-Member cmdlet,可以查看对象的属性和方法。PowerShell cmdlet输出的对象基本上是.Net framework中的底层类型,但是如果需要使用C语言或PSObject类型,则可以创建自己的对象。

管道

有很多带有管道的Linux shell,允许您将一个命令输出的文本作为输入发送到管道中的下一个命令。PowerShell通过允许您获取一个cmdlet输出的对象并将其作为输入传递给管道中的下一个cmdlet,将此功能提升到下一个级别。诀窍在于知道cmdlet返回什么类型的对象,这在使用Get-Member cmdlet时非常简单。

Get-Service | Get-Member

极客学校:学习如何在powershell中使用对象

由于超出本文范围的原因,属性和方法被联合称为类成员,这就解释了为什么使用Get-Member cmdlet来获取对象具有的所有方法和属性的列表。但是,Get-Member cmdlet还返回另一条重要信息,即底层对象类型。在上面的屏幕截图中,我们可以看到Get Service返回以下类型的对象:

System.ServiceProcess.ServiceController

由于PowerShell处理的是对象而不是文本,因此并非所有cmdlet都可以使用管道[1]链接在一起。这意味着我们需要找到一个cmdlet来接受System.ServiceProcess.ServiceController服务控制器管道中的对象。

Get-Command -ParameterType System.ServiceProcess.ServiceController

极客学校:学习如何在powershell中使用对象

请注意,有一个名为Stop-Service的cmdlet;让我们看看它的帮助。

Get-Help –Name Stop-Service

极客学校:学习如何在powershell中使用对象

InputObject参数似乎将ServiceController对象数组作为输入。通常,如果您看到一个名为InputObject的参数,它将接受来自管道的输入,但为了确保这一点,让我们看看该参数的完整帮助。

Get-Help -Name Stop-Service –Full

极客学校:学习如何在powershell中使用对象

我们的怀疑是对的。所以在这一点上我们知道:

  • Get服务返回ServiceController对象
  • 停止服务有一个名为InputObject的参数,该参数接受一个或多个ServiceControllers作为输入。
  • InputObject参数接受管道输入。

利用这些信息,我们可以做到以下几点:

Get-Service -Name ‘Apple Mobile Device’ | Stop-Service

极客学校:学习如何在powershell中使用对象

这一次就到此为止。下次我们来看看如何格式化、过滤和比较管道中的对象。

作业

  • 读取对象管道

如果你有任何问题,你可以发推特给我@taybgibb,或者只留下评论。

  • 发表于 2021-04-11 23:06
  • 阅读 ( 161 )
  • 分类:互联网

你可能感兴趣的文章

可提高windows管理技能的powershell cmdlet

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

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

使用powershell而不是批处理脚本的5个原因

大多数用户从未听说过PowerShell,更不用说触摸它并试用了。这可能是因为这个名字,听起来像是只有铁杆IT极客才会使用的东西。或者是因为PowerShell的好处还不清楚。可能是因为最初的学习曲线。 ...

  • 发布于 2021-03-15 16:49
  • 阅读 ( 281 )

如何使用windows powershell发送电子邮件

...收件箱分心,Windows桌面上都有一个很有用的工具。它叫PowerShell。 ...

  • 发布于 2021-03-17 17:00
  • 阅读 ( 425 )

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

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

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

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

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

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

如何将“在此处打开powershell”添加到windows中文件夹的右键单击菜单

如果您喜欢使用Windows PowerShell而不是命令提示符,您可能会喜欢右键单击Windows中的文件夹时从上下文菜单访问它。下面是如何做到这一点。 当您按住Shift键并单击文件夹时,Windows已经包含“在此处打开命令窗口”选项。不过,...

  • 发布于 2021-04-08 12:12
  • 阅读 ( 218 )

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

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

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

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

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

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

如何修复windows应用商店中卡住的下载

...尝试运行它。这不需要太多时间,可能会有帮助。 向powershell重新注册windows应用商店 如果所有这些都失败了,您可以尝试重新注册Windows应用商店,这是您可以重新安装它。为此,您需要使用PowerShell,这是一种内置于Windows中...

  • 发布于 2021-04-09 18:36
  • 阅读 ( 213 )

作用域如何影响powershell脚本

...况下,对环境变量的更改对当前会话具有全局影响。对于PowerShell,情况正好相反,因为作用域用于隔离脚本的修改。在这里,我们将探讨作用域如何影响PowerShell脚本,以及如何在它们内部和周围工作。 什么是范围(a scope)? 在...

  • 发布于 2021-04-11 03:54
  • 阅读 ( 250 )
yy729582
yy729582

0 篇文章

相关推荐