PowerShell的WMI VS CIM相同的对象返回不同的属性属性
问题描述:
我试图基于WMI脚本转换为CIM,这个脚本是能够注入一个IP地址的Hyper-V虚拟Mahine 原创剧本是:http://www.ravichaganti.com/blog/?p=2766PowerShell的WMI VS CIM相同的对象返回不同的属性属性
就我而言,我已经转换到WMI CIM的句子是这样的:
$vmname="mytestvm"
$vm=get-ciminstance -namespace 'root\virtualization\v2' -Class 'Msvm_ComputerSystem' -ComputerName $ComputerName | Where-Object { $_.ElementName -eq $vmname }
$VMSettings = get-cimassociatedinstance $vm -resultclassname 'Msvm_VirtualSystemSettingData' | Where-Object { $_.VirtualSystemType
-eq 'Microsoft:Hyper-V:System:Realized' }
$vmnetadapters=get-cimassociatedinstance $vmSettings -resultclassname 'Msvm_SyntheticEthernetPortSettingData'
$NetworkSettings = @(Get-CimAssociatedInstance $vmnetadapters -resultclassname 'Msvm_GuestNetworkAdapterConfiguration')
直到此时,一切工作正常,数据被访问,我能看到的界面特性。 但是当我尝试设置一个像原始脚本一样的值时,我无法修改它,它告诉我该属性设置为只读。
这些分配不起作用。
$NetworkSettings[0].DHCPEnabled = $false
$NetworkSettings[0].IPAddresses = $IPAddress
$NetworkSettings[0].Subnets = $Subnet
当我检查的对象与“获取会员”我看得出来,这些属性只有“get”方法和“设置”方法不可用。
Name MemberType Definition
---- ---------- ----------
DefaultGateways Property string[] DefaultGateways {get;}
DHCPEnabled Property bool DHCPEnabled {get;}
DNSServers Property string[] DNSServers {get;}
InstanceID Property string InstanceID {get;}
IPAddresses Property string[] IPAddresses {get;}
IPAddressOrigins Property uint16[] IPAddressOrigins {get;}
ProtocolIFType Property uint16 ProtocolIFType {get;}
PSComputerName Property string PSComputerName {get;}
Subnets Property string[] Subnets {get;}
原创剧本,使用WMI能够修改这些值,但是是不可能的,当我使用CIM
据微软WMI和CIM应该是等价的,但似乎也有一定的差异。
如何使用CIM语句来修改这些只读属性?
在此先感谢。
我已经试过了,但没有成功。我得到的CIM对象是一个关联的实例。我已经看到它有“CiminstanceProperties”,并且如果我参考:$ properties =(Get-CimAssociatedInstance $ vmnetadapters -resultclassname'Msvm_GuestNetworkAdapterConfiguration')。CimInstanceProperties $ properties [“DHCPEnabled”] .value = $ False –