我是靠谱客的博主 感性短靴,这篇文章主要介绍PowerShell对象的批处理方法,现在分享给大家,希望可以做个参考。

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

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

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

例如:

复制代码
1
PS C:UsersAdministrator> 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获取网卡绑定的配置信息;

复制代码
1
2
3
4
5
6
7
8
9
10
PS C:UsersAdministrator> 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

使用:

复制代码
1
gwmi win32_networkadapterconfiguration | gm -MemberType Method

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

复制代码
1
2
3
PS C:UsersAdministrator> gwmi win32_networkadapterconfiguration ` >> -Filter "description like '%intel%'" | >> Invoke-WmiMethod -Name EnableDHCP

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

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

复制代码
1
2
3
PS C:UsersAdministrator> 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方法,

复制代码
1
Get-Service -Name x* | ForEach-Object {$_.Stop()}

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

首选方式-批处理Cmdlet:

复制代码
1
Get-Service -Name x* | Stop-Service

WMI方式:

复制代码
1
2
PS C:UsersAdministrator> Get-WmiObject Win32_Service -Filter "Name Like 'x%'" | >> Invoke-WmiMethod -Name StopService

WMI和ForEach-Object结合的方式:

复制代码
1
2
PS C:UsersAdministrator> Get-WmiObject Win32_Service -Filter "Name Like 'x%'" | >> ForEach-Object {$_.StopService()}

Cmdlet方式:

复制代码
1
PS C:UsersAdministrator> Stop-Service -Name x*

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

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

 

----End----

最后

以上就是感性短靴最近收集整理的关于PowerShell对象的批处理方法的全部内容,更多相关PowerShell对象内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(67)

评论列表共有 0 条评论

立即
投稿
返回
顶部