PowerShell对象的批处理方法

一般我们认为欸的批处理是循环遍历对象,一个一个的进行处理,这种思想在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 -wrap

DHCPEnabled IPAddress                                 DefaultIPGateway DNSDomain ServiceName  Description
----------- ---------                                 ---------------- --------- -----------  -----------
       True                                                                      kdnic        Microsoft Kernel Debug Ne
                                                                                              twork Adapter
       True {192.168.2.107, fe80::6d3c:d25e:9bd:c0d0} {192.168.2.1}              RTWlanE      Realtek RTL8188EE Wireles
                                                                                              s LAN 802.11n PCI-E NIC
       True                                                                      vwifimp      Microsoft Wi-Fi Direct Vi
                                                                                              rtual Adapter

使用:

gwmi win32_networkadapterconfiguration | gm -MemberType Method

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

扫描二维码关注公众号,回复: 2247390 查看本文章
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----

猜你喜欢

转载自blog.csdn.net/sdyu_peter/article/details/81052445
今日推荐