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