Когда предоставлять CimOperationOptions методу CIM и как узнать, что предоставить?

Я использую инфраструктуру управления Windows (MI) для выполнения ряда задач, совершая вызовы API непосредственно из C#. Многие из операций CIM и ctors берут экземпляр CimOperationOptions, Я нашел очень мало примеров кода, который предоставляет эти параметры (и не содержит документации), и не знаю, когда они должны быть использованы и что является действительным для предоставления.

Я должен был предоставить CimOperationOptions при создании правила туннеля IPSec, но я знал это только потому, что New-NetIPsecRule Командлет. Этого примера было недостаточно, чтобы в целом понять, для чего используются параметры, и какие допустимые значения следует предоставить. CimOperationOptions.SetCustomOption() msgstr "установить пользовательский параметр сервера или поставщика CIM". Но я не могу найти ссылку на то, что эти варианты, или как их определить. Так что я не знаю, как определить, нужно ли мне передавать значения через CimOperationOptions еще раз (если я не могу найти командлет для размотки).

Может кто-нибудь объяснить, что за параметры управления, и как узнать, какие значения можно безопасно предоставить?

Разъяснение по примеру:
Например, при создании туннеля IPSec (MSFT_NetConSecRule), дополнительные связанные объекты создаются неявно (в соответствии с DSP02223, строка 1086), такие как MSFT_NetAddressFilter. Чтобы установить конечные точки для правила (как на рисунке)

вы предоставляете пользовательские параметры операций, определяющие "LocalAddress" и "RemoteAddress" при создании экземпляра правила. Эти значения затем применяются к неявно созданному MSFT_NetAddressFilter, установив свойства с тем же именем. Это основной C#:

var ipSecRule = new CimInstance("MSFT_NetConSecRule");
// Add instance properties to ipSecRule here
// ...

// Have to have options to set LocalAddress/RemoteAddress for MSFT_NetAddressFilter spawned when ipSecRule is created
var opts = new CimOperationOptions();
opts.SetCustomOption("LocalAddress", new string[] { "192.168.1.0/24" }, CimType.StringArray, false);
opts.SetCustomOption("RemoteAddress", new string[] { "10.10.1.115/24" }, CimType.StringArray, false);
var cimSession = CimSession.Create(computerName: null); // null means to use the local computer
cimSession.CreateInstance("root/standardcimv2", ipSecRule, opts);

Очевидно, что он сопоставляет ключи "LocalAddress" и "RemoteAddress" со свойствами на MSFT_NetAddressFilter, Но что, если ключ существует на нескольких порожденных объектах? Есть ли синтаксис для объявления, который нужно установить? подобно opts.SetCustomOption("ObjectName::PropertyName") или т.п? (Я догадался о некоторых из них, но не повезло.)

Я пробовал копаться в стандартах, командлетах, декомпилированном коде (Microsoft.Management.Infrastructure.CimCmdlets.dll, Microsoft.Management.Infrastrucutre.dll, Microsoft.Windows.Firewall.Commands.dll) и не понял этого.

Microsoft.Windows.Firewall.Commands.DAPolicyChange.ProcessRecord() на самом деле использует CimOperationOptions для вызова MSFT_NetConSecRule.SyncPolicyDelta() Способ; но отслеживая это через код, который я закончил в Microsoft.Management.Infrastructure.Native.<Module>.MI_Session_Invoke, в этот момент я был потерян.

tldr; У меня есть код, который работает, когда я предоставляю CimOperationOptions но я не знаю что CimOperationOptions на самом деле для / как они применяются. Так что я не знаю, когда они понадобятся мне в будущем.

0 ответов

Другие вопросы по тегам