2016-11-07 20 views
0

Я пытаюсь преобразовать сценарий на основе WMI для CIM, этот сценарий может вводить IP-адрес на Hyper-V Virtual Mahine Оригинальный сценарий: http://www.ravichaganti.com/blog/?p=2766Powershell WMI против 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-Member» Я мог видеть, что эти свойства имеют только «получить» метод, и «установить» метод не доступен.

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

Согласно Microsoft WMI и CIM должны быть эквиваленты, но, кажется, что есть некоторые различия.

Как это сделать, чтобы изменить эти свойства только для чтения, используя предложения CIM?

Заранее спасибо.

ответ

1

Если вы работаете с командлетами CIM и хотите внести изменения, вы должны использовать set-ciminstance, чтобы внести изменения.

+0

Я уже пробовал, но безуспешно. Объект CIM, который я получаю, является ассоциированным экземпляром. Я видел, что у него есть «CiminstanceProperties», и если я называю: $ properties = (Get-CimAssociatedInstance $ vmnetadapters -resultclassname «Msvm_GuestNetworkAdapterConfiguration»). CimInstanceProperties $ properties ["DHCPEnabled"]. Value = $ False –

Смежные вопросы