WMI:查询类的特定实例

问题描述

我想通过C#中的WMI对Microsoft Windows UWF筛选器(package com.katamlek.gcp_crystalloids; @SpringBootApplication(scanBasePackages = {"com.katamlek"}) @EntityScan(basePackages = {"com.katamlek"}) @EnableDatastoreRepositories(basePackages = {"com.katamlek"}) public class GcpCrystalloidsApplication { public static void main(String[] args) { SpringApplication.run(GcpCrystalloidsApplication.class,args); } } )的配置进行更改。 现在,由于其性质,只能对WMI类的特定实例进行某些更改。 例如:


n_thread = 1  # I am using only 1 thread my local CPU
tf.config.threading.set_inter_op_parallelism_threads(n_thread)
tf.config.threading.set_intra_op_parallelism_threads(n_thread)

model = DNNLinearCombinedClassifier(...)

max_epoch = 1000                     # Number of time the training data set will be seen
cardinality = 20                     # number of batches in my training data set
max_step = max_epoch * cardinality   # max_step = 20000

# This will create a tf.data.Dataset of 20 batches,repeated 1000 times
training_spec = TrainSpec(build_training_dataset,max_steps=max_step)

# This will create a tf.data.Dataset of 1 batch,repeated 1 time
evaluation_spec = EvalSpec(build_evaluation_dataset,steps=1,start_delay_secs=1,throttle_secs=30))

tf.estimator.train_and_evaluate(model,train_spec=training_spec,eval_spec=evaluation_spec)

此代码显示:

uwfmgr.exe

只能对CurrentSession = false的实例进行更改。

如何以一种干净的方式获取此实例?

换句话说,我不想做:

    var scope = new ManagementScope(@"root\standardcimv2\embedded");
    using (var uwfClass = new ManagementClass(scope.Path.Path,"UWF_Servicing",null))
    {
        var instances = uwfClass.GetInstances();
        foreach (var instance in instances)
        {
            Console.WriteLine(instance.ToString());
        }
    }

我相信有一种“更精细”的方法可以做到这一点。预先感谢!

解决方法

您可以使用SQL for WMI WHERE clause查询,如下所示:

var searcher = new ManagementObjectSearcher(
                   @"ROOT\StandardCimv2\embedded",@"SELECT * FROM UWF_Servicing WHERE CurrentSession = FALSE");
foreach (ManagementObject obj in searcher.Get())
{
    ... etc ...
}

但是您也可以使用对象的属性(值类型将映射到标准.NET的类型),如下所示:

var searcher = new ManagementObjectSearcher(
                   @"ROOT\StandardCimv2\embedded",@"SELECT * FROM UWF_Servicing");
foreach (ManagementObject obj in searcher.Get())
{
    var currentSession = obj.GetPropertyValue("CurrentSession");
    if (false.Equals(currentSession))
    {
        ... etc ...
    }
}

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...