Многие описания в Интернете не упоминают, что указать Access-Control-Allow-Origin
недостаточно. Вот полный пример, который работает для меня:
<?php
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, DELETE, PUT, PATCH, OPTIONS');
header('Access-Control-Allow-Headers: token, Content-Type');
header('Access-Control-Max-Age: 1728000');
header('Content-Length: 0');
header('Content-Type: text/plain');
die();
}
header('Access-Control-Allow-Origin: *');
header('Content-Type: application/json');
$ret = [
'result' => 'OK',
];
print json_encode($ret);
Вам нужно будет создать пустой CimInstance соответствующего типа и использовать метод Add коллекции CimInstanceProperties, чтобы добавить необходимые свойства ключа. Затем используйте метод GetInstance класса CimSession, чтобы получить полный CimInstance со всеми его заполненными данными. Необходимые ключевые свойства задокументированы онлайн для каждого класса, но я сталкивался с ситуациями, когда документация неполная. Чтобы автоматически создаваемая документация не отвлекала вас от того, что вы видите своими глазами, я рекомендую просмотреть свойство __RELPATH для экземпляра класса WMI, на который вы нацелены. Это обеспечит пары ключ-значение.
В PowerShell:
gwmi -Namespace root\virtualization\v2 -Class Msvm_VirtualSystemSnapshotService | select __relpath | fl
, чтобы получить ...
__RELPATH : Msvm_VirtualSystemSnapshotService.CreationClassName="Msvm_VirtualSystemSnapsho
tService",Name="vssnapsvc",SystemCreationClassName="Msvm_ComputerSystem",Syste
mName="MYHOSTNAME"
Что означает в C #, вам нужно сделать это:
// Using Microsoft.Management.Infrastructure
private const string _namespace = @"root\virtualization\v2";
private const string _hypervHost = "MYHOSTNAME";
using (var cimSession = CimSession.Create(_hyperVHost))
{
// Create generic instance with no instance data
var keyInstance = new CimInstance("Msvm_VirtualSystemSnapshotService");
// Attach key CimProperties
keyInstance.CimInstanceProperties.Add(CimProperty.Create("CreationClassName", "Msvm_VirtualSystemSnapshotService", CimFlags.Key));
keyInstance.CimInstanceProperties.Add(CimProperty.Create("SystemCreationClassName", "Msvm_ComputerSystem", CimFlags.Key));
keyInstance.CimInstanceProperties.Add(CimProperty.Create("Name", "vssnapsvc", CimFlags.Key));
keyInstance.CimInstanceProperties.Add(CimProperty.Create("SystemName", _hyperVHost, CimFlags.Key));
// Retrieve the object
snapShotService = cimSession.GetInstance(_namespace, keyInstance);
}