Создать поддельный класс CIM - PullRequest
0 голосов
/ 17 апреля 2019

Я могу создать поддельный класс WMI со следующим кодом PowerShell:

# Win32_SMBIOSMemory
$newClass = New-Object System.Management.ManagementClass("root\cimv2", [String]::Empty, $null); 
$newClass["__CLASS"] = "Win32_SMBIOSMemory"; 
$newClass.Qualifiers.Add("Static", $true)
$newClass.Properties.Add("Name", [System.Management.CimType]::String, $false)
$newClass.Properties["Name"].Qualifiers.Add("read", $true)
$newClass.Properties["Name"].Qualifiers.Add("Key", $true)
$newClass.Put()
Set-WmiInstance -Path \\.\root\cimv2:Win32_SMBIOSMemory -Arguments @{Name="Memory Array";}

Если я попробую то же самое с классом CIM, он не будет работать:

# CIM_Memory
$newClass = New-Object System.Management.ManagementClass("root\cimv2", [String]::Empty, $null); 
$newClass["__CLASS"] = "CIM_Memory"; 
$newClass.Qualifiers.Add("Static", $true)
$newClass.Properties.Add("DeviceID", [System.Management.CimType]::String, $false)
$newClass.Properties["DeviceID"].Qualifiers.Add("read", $true)
$newClass.Properties["DeviceID"].Qualifiers.Add("Key", $true)
$newClass.Put()
Set-WmiInstance -Path \\.\root\cimv2:CIM_Memory -Arguments @{DeviceID="Cache Memory 0";}

Ошибка:

Exception calling "Put" with "0" argument(s): "Class has children "

Я проверил, есть ли New-CimInstance, но пока не удалось создать поддельный экземпляр.

...