2016-11-07 85 views
0

我试图基于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语句来修改这些只读属性?

在此先感谢。

回答

1

如果您正在使用CIM cmdlet并想进行更改,则可以使用set-ciminstance实际进行更改。

+0

我已经试过了,但没有成功。我得到的CIM对象是一个关联的实例。我已经看到它有“CiminstanceProperties”,并且如果我参考:$ properties =(Get-CimAssociatedInstance $ vmnetadapters -resultclassname'Msvm_GuestNetworkAdapterConfiguration')。CimInstanceProperties $ properties [“DHCPEnabled”] .value = $ False –

相关问题