极客学校:在powershell中使用集合

由于PowerShell基于.Net框架,并结合了各种其他技术,如WMI和CIM,因此实现同一目标的方法总是不止一种。快来加入我们,学习如何选择最佳的方法来完成我们的任务。...

极客学校:在powershell中使用集合

由于PowerShell基于.Net框架,并结合了各种其他技术,如WMI和CIM,因此实现同一目标的方法总是不止一种。快来加入我们,学习如何选择最佳的方法来完成我们的任务。

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

  • 了解如何使用PowerShell自动化Windows
  • 学习在PowerShell中使用cmdlet
  • 学习如何在PowerShell中使用对象
  • 在PowerShell中学习格式化、过滤和比较
  • 学习在PowerShell中使用远程处理
  • 使用PowerShell获取计算机信息

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

使用批处理cmdlet

在本系列的前面,当我们向您介绍管道时,我们向您展示了如何获取一个cmdlet输出的对象,并使用如下方式将它们作为输入传递给另一个cmdlet:

Get-Process -Name notepad | Stop-Process

这将杀死任何名为“记事本”的进程。但您可能想知道PowerShell是如何用一个命令杀死所有notepad实例的。答案就在Stop-processcmdlet的帮助下。

help Stop-Process –Full

极客学校:在powershell中使用集合

如果查看syntax部分中的最后一行代码,您可以看到InputObject参数接受Process[]类型的对象,并且每当您看到一个类型后跟两个方括号时,这意味着该参数接受前面的一个或多个类型。在这种情况下,它接受一个或多个进程对象。从技术上讲,我们可以说InputObject cmdlet接受进程数组。每当您有一个cmdlet以这种方式支持批处理操作时,请使用它。这是第一选择。

使用wmi

虽然WMI不是从Microsoft HQ发布的最好技术,但它确实在如何处理对象集合的列表中名列第二。我们可以很容易地从Win32\u进程类中获取运行的进程列表,如:

Get-WmiObject –Class Win32_Process

极客学校:在powershell中使用集合

由于WMI查询返回它自己类型的对象,因此您需要寻找一个可以停止该进程的方法,因此让我们通过管道来获取成员。

Get-WmiObject –Class Win32_Process | Get-Member

极客学校:在powershell中使用集合

看起来最需要停止的是terminate方法,所以这一定是一个。要调用WMI对象上的方法,只需通过管道将其调用WmiMethod并指定方法的名称。

Get-WmiObject -Class Win32_Process -Filter “name=’notepad.exe'” | Invoke-WmiMethod -Name Terminate

极客学校:在powershell中使用集合

太好了,成功了。每当您在WMI中获得ReturnValue为0时,请记住命令已成功执行。

枚举

如果其他两种方法失败,那么如果必须对一组对象执行某些操作,则可以枚举整个对象并对每个对象执行操作。首先,您必须找到停止单个进程的方法。

Get-Process | Get-Member -MemberType Method

极客学校:在powershell中使用集合

很好,看起来我们可以使用Kill方法,然后通过管道将ForEach对象全部杀死。

Get-Process -Name notepad | ForEach-Object -Process {$_.Kill()}

极客学校:在powershell中使用集合

在这里,我们获取所有返回process的process对象,并将它们传递给ForEach Object cmdlet。很像Where Object cmdlet,我们用$表示管道中的每个对象,我们可以调用$上的Kill()方法。尽管如此,枚举集合的速度要比上述方法慢得多,只能作为最后一个结果使用。

总结

选择一

Get-Process -Name notepad | Stop-Process

选择二

Get-WmiObject -Class Win32_Process -Filter “name=’notepad.exe'” | Invoke-WmiMethod -Name Terminate

选择三

Get-Process -Name notepad | ForEach-Object -Process {$_.Kill()}

这一次就到此为止,各位,下周见,更多的PowerShell乐趣。

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

你可能感兴趣的文章

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

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

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

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

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

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

如何在windows 10上安装powershell 7

微软于2020年3月4日宣布PowerShell 7.0。这是PowerShell、Microsoft跨平台命令行shell和脚本语言的最新主要更新。下面是什么新的,以及如何在Windows PC上安装它。 powershell 7有什么新功能? 最新版本PowerShell 7是在以前的PowerShell Core 6.1基...

  • 发布于 2021-04-02 11:09
  • 阅读 ( 283 )

如何在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
  • 阅读 ( 281 )

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

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

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

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

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

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

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

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

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

如何在Windows10上使用packagemanagement(又名oneget)

Windows10包括一个内置在PowerShell中的包管理工具。在最终版本中,它被命名为“PackageManagement”,但它仍然基于一个名为OneGet的开源项目。 PackageManagement(aka OneGet)在技术上不是包管理器。它是一个包管理器—一个框架和一组Powe...

  • 发布于 2021-04-10 08:25
  • 阅读 ( 230 )

如何使用批处理文件使powershell脚本更易于运行

由于几个主要与安全相关的原因,PowerShell脚本不像批处理脚本那样易于移植和使用。但是,我们可以将批处理脚本与PowerShell脚本捆绑在一起,以解决这些问题。在这里,我们将向您展示一些问题领域,以及如何构建批处理脚本...

  • 发布于 2021-04-11 03:30
  • 阅读 ( 287 )
njct9201
njct9201

0 篇文章

相关推荐