概述
一般我们认为欸的批处理是循环遍历对象,一个一个的进行处理,这种思想在PowerShell也是可用的,同时还有更好的批处理方法,下面介绍几种批处理方法:
1,使用PowerShell Cmdlet进行批处理;
利用管道(Pipeline)将一个Cmdlet产生的结果传输给另一个Cmdlet,PowerShell知道如果处理传入的多个对象;
例如:
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获取网卡绑定的配置信息;
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
使用:
gwmi win32_networkadapterconfiguration | gm -MemberType Method
获取有哪些方法,使用Invoke-WmiMethod 使用该方法,例如开启Intel网卡的DHCP功能:
PS C:UsersAdministrator> gwmi win32_networkadapterconfiguration `
>> -Filter "description like '%intel%'" |
>> Invoke-WmiMethod -Name EnableDHCP
执行结果中包括大量系统对象,我们只要看ReturnValue是否为0,0表示成功。
若使用CIM方式,可对应使用Invoke-CimMethod调用对应的方法:
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方法,
Get-Service -Name x* | ForEach-Object {$_.Stop()}
下面列举其他方法停止X开头的服务:
首选方式-批处理Cmdlet:
Get-Service -Name x* | Stop-Service
WMI方式:
PS C:UsersAdministrator> Get-WmiObject Win32_Service -Filter "Name Like 'x%'" |
>> Invoke-WmiMethod -Name StopService
WMI和ForEach-Object结合的方式:
PS C:UsersAdministrator> Get-WmiObject Win32_Service -Filter "Name Like 'x%'" |
>> ForEach-Object {$_.StopService()}
Cmdlet方式:
PS C:UsersAdministrator> Stop-Service -Name x*
大概就是使用Get-Something | Get-Member 获取对象的方法,使用ForEach-Object枚举对象,调用方法进行批处理;
如果是WMI/CIM方式 也可使用Invoke-WMIMethod/CIMMethod
----End----
最后
以上就是感性短靴为你收集整理的PowerShell对象的批处理方法的全部内容,希望文章能够帮你解决PowerShell对象的批处理方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复