一般我们认为欸的批处理是循环遍历对象,一个一个的进行处理,这种思想在PowerShell也是可用的,同时还有更好的批处理方法,下面介绍几种批处理方法:

1,使用PowerShell Cmdlet进行批处理;

利用管道(Pipeline)将一个Cmdlet产生的结果传输给另一个Cmdlet,PowerShell知道如果处理传入的多个对象;

例如:

PS C:\Users\Administrator> Get-Service -Name BITS,xbgm,Spooler | Set-Service -StartupType Automatic

一次性将三个服务设置为自动启动类型,这中批处理方式是PowerShell最推荐的方式,也是最理想的,但是有时候没有相应的Cmdlet来完成我们想要的操作,就需要另找其他方法了。

2,CIM/WMI方式:调用方法;

CIM:Common Information Model 是WMI建立的标准

WMI:Windows Management Instrumentation WMI是一项外部技术,仅仅是与PowerShell有建立接口而已。

比如可以使用:Get-WmiObject win32_NetworkAdapterConfiguration获取网卡绑定的配置信息;

PS C:\Users\Administrator> Get-WmiObject win32_NetworkAdapterConfiguration | ft -wrapDHCPEnabled IPAddress                                 DefaultIPGateway DNSDomain ServiceName  Description
----------- ---------                                 ---------------- --------- -----------  -----------True                                                                      kdnic        Microsoft Kernel Debug Network AdapterTrue {192.168.2.107, fe80::6d3c:d25e:9bd:c0d0} {192.168.2.1}              RTWlanE      Realtek RTL8188EE Wireless LAN 802.11n PCI-E NICTrue                                                                      vwifimp      Microsoft Wi-Fi Direct Virtual Adapter

使用:

gwmi win32_networkadapterconfiguration | gm -MemberType Method

获取有哪些方法,使用Invoke-WmiMethod 使用该方法,例如开启Intel网卡的DHCP功能:

PS C:\Users\Administrator> gwmi win32_networkadapterconfiguration `
>> -Filter "description like '%intel%'" |
>> Invoke-WmiMethod -Name EnableDHCP

执行结果中包括大量系统对象,我们只要看ReturnValue是否为0,0表示成功。

若使用CIM方式,可对应使用Invoke-CimMethod调用对应的方法:

PS C:\Users\Administrator> Get-CimInstance -ClassName Win32_NetworkAdapterConfiguration `
>> -Filter "description like '%intel%'" |
>> Invoke-CimMethod -MethodName EnableDHCP

WMI使用RPC网络通信;CIM使用WS-MAN通信。

3,最后的方法:枚举对象

ForEach-Object

例如:获取x开头的服务,将其停止,Get-Service | gm -MemberType Method 获取所有方法;使用Stop方法,

Get-Service -Name x* | ForEach-Object {$_.Stop()}

下面列举其他方法停止X开头的服务:

首选方式-批处理Cmdlet:

Get-Service -Name x* | Stop-Service

WMI方式:

PS C:\Users\Administrator> Get-WmiObject Win32_Service -Filter "Name Like 'x%'" |
>> Invoke-WmiMethod -Name  StopService

WMI和ForEach-Object结合的方式:

PS C:\Users\Administrator> Get-WmiObject Win32_Service -Filter "Name Like 'x%'" |
>> ForEach-Object {$_.StopService()}

Cmdlet方式:

PS C:\Users\Administrator> Stop-Service -Name x*

大概就是使用Get-Something | Get-Member 获取对象的方法,使用ForEach-Object枚举对象,调用方法进行批处理;

如果是WMI/CIM方式 也可使用Invoke-WMIMethod/CIMMethod

----End----

PowerShell对象的批处理方法相关推荐

  1. 从零开始学PowerShell(9)创建PowerShell对象

    我们之前有一篇文章写过如何获取对象的信息,但是从没有说过如何创建一个PowerShell对象.正巧也看到很多刚学PowerShell的朋友问起这个问题,今天就来说一说如何创建PowerShell对象. ...

  2. html中有csstext方法吗,style对象的cssText方法有哪些使用方法

    这次给大家带来style对象的cssText方法有哪些使用方法,style对象的cssText方法使用的注意事项有哪些,下面就是实战案例,一起来看一下. cssText 本质是什么? cssText ...

  3. Spring中利用applicationContext.xml文件实例化对象和调用方法

    Spring中实例化对象和调用方法入门 1.jar包和xml的准备 已上传至百度云盘,链接: https://pan.baidu.com/s/1CY0xQq3GLK06iX7tVLnp3Q 提取码: ...

  4. 对象的notify方法的含义和对象锁释放的三种情况

    1,notify的含义     (1)notify一次只随机通知一个线程进行唤醒 (2)在执行了notify方法之后,当前线程不会马上释放该对象锁,呈wait状态的线程也不能马上获得该对象锁, 要等到 ...

  5. 向现有对象实例添加方法

    我读过,可以在Python中向现有对象(即不在类定义中)添加方法. 我了解这样做并不总是一件好事. 但是怎么可能呢? #1楼 至少有两种方法可以将方法附加到没有types.MethodType的实例上 ...

  6. js进阶课程 12-9 jquery的事件对象event的方法有哪些?

    js进阶课程 12-9 jquery的事件对象event的方法有哪些? 一.总结 一句话总结:三组六个,阻止默认事件一组,阻止冒泡一组,阻止冒泡和剩余事件一组. 1.事件的默认动作指什么? 比如点a标 ...

  7. java 克隆_Java实现对象克隆的方法

    前言 这也是昨天的面试题. 当时只说了深拷贝以及浅拷贝,面试官问了两遍还有吗,我很肯定的说就这两种了,面试结束之后查了一下,啪啪打脸. 正文 JAVA实现克隆有两种形式 浅克隆 深克隆 浅克隆与深克隆 ...

  8. 【Groovy】MOP 元对象协议与元编程 ( 使用 Groovy 元编程进行函数拦截 | 使用 MetaClass 进行方法拦截 | 对象上拦截方法 | 类上拦截方法 )

    文章目录 一.使用 MetaClass 进行方法拦截 1.使用 MetaClass 在单个对象上进行方法拦截 2.使用 MetaClass 在类上进行方法拦截 二.完整代码示例 1.对象方法拦截 2. ...

  9. 【Groovy】闭包 Closure ( 闭包中调用 Groovy 脚本中的方法 | owner 与 delegate 区别 | 闭包中调用对象中的方法 )

    文章目录 一.闭包中调用 Groovy 脚本中的方法 二.owner 与 delegate 区别 三.闭包中调用 Groovy 对象中的方法 一.闭包中调用 Groovy 脚本中的方法 在 Groov ...

最新文章

  1. linux系统启动报错:[contains a file system with errors, check forced]的解决方法参考
  2. 只要你懂为啥有人爱砍传奇,就能明白《逃离塔科夫》为何会成功
  3. iOS 一个开发者账号 多台Mac 共用
  4. JavaFX UI控件教程(十九)之Hyperlink
  5. java中this_夯实Java基础系列7:一文读懂Java 代码块和执行顺序
  6. 一年超20万人次在抖音志愿登记器官捐献
  7. prometheus监控redis(无metric接口)
  8. JAVA写接口傻瓜(%)教程(五)
  9. dbf转成excel_excel怎么转为dbf? Excel与DBF互相转换的教程
  10. ipv6一致性测试(IPv6 Specification)内核修改
  11. 英语单词词性顺口溜_英语单词词性顺口溜
  12. 安卓作业—Fragment界面跳转
  13. ls基本用法-查看文件大小 k m g
  14. Codeforces 1379B.Dubious Cyrpto
  15. 全栈工程师的百宝箱:黑魔法之文档篇
  16. IELTS Lexical Resources - Writing 3 - Reasoning and discussion
  17. 解决canvas画布图片跨域问题
  18. 第一次用gcc命令时报错:gcc: 未找到命令...
  19. 分享一个可以下载网页上视频软件(IDM 6.33.2)下载器
  20. https协议能否让网站,优先被百度收录,个人观点

热门文章

  1. 单片机:数字式时钟—日历
  2. oracle X表汇总
  3. 给TextView加边框
  4. 利用Vue.js实现简单员工管理系统(增删查)的功能
  5. 深入解析DC/OS 1.8 – 高可靠的微服务及大数据管理平台
  6. 最小的可重现示例Minimal reproducible example
  7. 美图php面试题目,据说是雅虎的一份PHP面试题附答案
  8. 网络计算机自动巡检,奇辉巡检机器人 公安巡检机器人 自动巡检报警 安防监控报警...
  9. linux 僵尸进程deffunc,subprocess.Popen引起的僵尸进程[sh] defunct
  10. (翻译)在Y分钟学X:OpenCV (OpenCV入门)(中文注释)