标签: wmi-query

Delphi Wmi查询远程机器

我们使用WmiSet在远程计算机上执行Wmi查询.它在Delphi 2007中运行良好,但目前不适用于Delphi XE.

我发现了一些代码可以Wmi Queries从以前的SO问题使用Wmi和Delphi.提供的代码片段Answer No. 5在我的本地计算机上运行良好,但我需要知道是否可以在远程计算机上执行Wmi Query.

即使我使用管理员凭据连接到远程计算机,也会出现EOleSysError: Access is denied异常.

问候,彼得.

delphi wmi wmi-query

2
推荐指数
1
解决办法
2924
查看次数

ManagementObjectSearcher查询值来自哪里?(WMI)

在尝试在网络上查找一组计算机时,我发现了ManagementObjectSearcher类以及ManagementObject类.ManagementObjectSearcher的构造函数将sql/sql-esque查询作为参数.目前,我正在使用我在遗留代码中找到的查询:

ManagementObjectSearcher adapters = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapter");
Run Code Online (Sandbox Code Playgroud)

但我正在试图弄清楚如何知道查询中可能存在的内容.什么是表/对象?所有可能的限制是什么?这个课程和相关问题的一般主题是什么,所以我可以查看并了解更多信息?

sql wmi wmi-query c#-4.0

2
推荐指数
1
解决办法
6065
查看次数

批量WMIC重定向输出并包装到变量中

我正在尝试使用WMIC删除旧打印服务器上的旧打印机

如果我从命令行使用以下语法,它的工作原理

WMIC PRINTER WHERE"SERVERNAME LIKE'%% OLDSERVERNAME %%'"DELETE

我被问到是否可以让它更换打印机或更新它们以免帮助台获得"如何添加我的打印机"电话

我尝试使用SET的一些变体来设置SERVERNAME的属性,它似乎处理,但没有任何变化,并且执行GET仍然显示旧值.

所以我想我可以做一个FOR/F循环,在变量中包装打印机的名称(sharename),然后在删除违规打印机后使用另一个命令重新创建打印机.

这是我的剧本

@ECHO

ECHO Gathering Installed Printer Information...

FOR /F "tokens=1 skip=1" %%A IN ('WMIC PRINTER WHERE "Servername like "%%printaz1%%"" get sharename') DO SET PRINTERNAME=%%A

ECHO %PRINTERNAME%
Run Code Online (Sandbox Code Playgroud)

所以你会认为你得到的所有值都包含在一个很好的变量中,你可以根据自己的意愿去做,但是没有,我开启了回声,看起来这个变量一旦被捕获就会被设置回null

我的输出看起来像这样......

FOR /F "tokens=1 skip=1" %%A IN ('WMIC PRINTER WHERE "Servername like "%%printaz1%%"" get sharename') DO SET PRINTERNAME=%%A

SET PRINTERNAME=nameofprinter

SET PRINTERNAME=

ECHO

ECHO is on.
Run Code Online (Sandbox Code Playgroud)

我会喜欢一些关于为什么它似乎倾销字符串的想法.

Powershell和VBScript也不是不可选择的,我对两者都很熟悉,这似乎有可能,而且我真的不想重新开始.

wmi batch-file wmi-query wmic

2
推荐指数
1
解决办法
2万
查看次数

WQL中的IN运算符

我需要编写一个WMI查询,我需要检查一些值是否等于列表中的一个值,但我没有发现WQL支持像SQL这样的IN运算符.

例如:SELECT*FROM Device WHERE __CLASS IN("Device1","Device20").

如何编写此查询的方法是什么?

谢谢.

windows wmi wmi-query wql

2
推荐指数
1
解决办法
4289
查看次数

C#WMI读取远程事件日志

我试图在最近5个小时左右的时间内对另一台计算机运行WMI查询以查找错误.在运行WMI查询时,您是否至少应该使用where子句过滤初始查询?

我的代码基于从MSDN上的WMI代码创建者生成的样本

这是我正在使用的选择查询

    private ManagementScope CreateNewManagementScope(string server)
    {
        string serverString = @"\\" + server + @"\root\cimv2";

        ManagementScope scope = new ManagementScope(serverString);

        return scope;
    } 

            ManagementScope scope = CreateNewManagementScope(servername);
            scope.Connect();
            SelectQuery query = new SelectQuery("select * from Win32_NtLogEvent where TimeWritten > '" + DateTime.Now.AddHours(-5).ToString() + "'");
            ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
            ManagementObjectCollection logs = searcher.Get();

            int iErrCount = logs.Count;
Run Code Online (Sandbox Code Playgroud)

我只是想了解最近5个小时内的错误.在计算时它会抛出一个错误.错误是相当模糊的"通用失败".

[更新 - 现在使用这样的日期]

                DateTime d = DateTime.UtcNow.AddHours(-12);
            string dateFilter = ManagementDateTimeConverter.ToDmtfDateTime(d);
            SelectQuery query = new SelectQuery("select * from Win32_NtLogEvent where …
Run Code Online (Sandbox Code Playgroud)

c# wmi wmi-query

2
推荐指数
1
解决办法
4170
查看次数

使用 Windows 命令行获取每个核心的 CPU 使用率

是否可以打印系统中每个核心的当前CPU使用率?

这是我到目前为止使用 powershell 所做的:

Get-WmiObject -Query "select Name, PercentProcessorTime from Win32_PerfFormattedData_PerfOS_Processor"
Run Code Online (Sandbox Code Playgroud)

powershell cpu-usage wmi-query cpu-cores

2
推荐指数
1
解决办法
8786
查看次数

WQL 在目录中查找文件

如何使用 WMI 查询语言在目录中查找文件?

这是我到目前为止:

select * from Cim_DataFile
 where path = "\\\\C:\\Users\\name\\"
Run Code Online (Sandbox Code Playgroud)

查询不返回任何结果。

任何帮助深表感谢。

wmi wmi-query wql

1
推荐指数
1
解决办法
4572
查看次数

WMIC 命令在批处理文件的 For 循环中不起作用

我有一个正在尝试运行的批处理文件,但我不断收到错误。我认为这个问题类似于I can't get the right syntax to use WMIC in batch file,但 dbenham 的答案在我的情况下并不完全有效,因为我正在通过管道传输到 findstr。这是批处理文件的一部分(它所在的部分):

for /F %%I in ('wmic nic where 'Manufacturer!="Microsoft" and Macaddress IS NOT NULL' get index ^| findstr /r [0-9]') do ( echo %%I )

如果您从 cmd 运行 wmic 命令或它自己的批处理文件行,则 wmic 命令工作得很好,但我无法让它在 for 循环中运行。有人可以帮我从这里出去吗?

谢谢,约翰

wmi for-loop batch-file wmi-query wmic

1
推荐指数
1
解决办法
5347
查看次数

获取 ManagementObject 属性的最快方法

我有一个方法可以返回远程机器上的服务列表。我正在使用 ManagementObjectSearcher.Get() 和 WIN32 查询获取 ManagementObjectCollection。然后在 foreach 循环中,我创建了 Service 类的实例并将其添加到结果列表中。在初始化新服务时,我使用 GetPropertyValue(string) 获取 ManagementObject 属性。我面临的问题是这个过程非常缓慢。我认为 GetPropertyValue 很慢(我每个循环使用它 7 次)。有没有更快的方法从 ManagementObject 类中获取属性?

 var query = new ObjectQuery("Select Name, DisplayName, ProcessId, Description, State, StartMode, StartName From Win32_Service");
                ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
                ManagementObjectCollection allServices = searcher.Get();
                foreach (ManagementObject p in allServices)
                {Service newService = new Service{ Name = p.GetPropertyValue("Name"),etc...} result.Add(newService);}
Run Code Online (Sandbox Code Playgroud)

c# optimization winapi wmi-query

1
推荐指数
1
解决办法
2994
查看次数

在 Powershell 中查询给定进程的 TCP 连接数

似乎执行此操作的类是MSFT_NetTransportConnection

但是我不能通过 Get-WmiObject 查询这个类:

C:\Users\Justin Dearing> Get-WmiObject MSFT_NetTransportConnection
Get-WmiObject : Invalid class "MSFT_NetTransportConnection"
At line:1 char:1
+ Get-WmiObject MSFT_NetTransportConnection
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidType: (:) [Get-WmiObject], ManagementException
    + FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

C:\Users\Justin Dearing> Get-WmiObject MSFT_NetTransportConnection  -Namespace "root/StandardCimv2"
Get-WmiObject : Not supported
At line:1 char:1
+ Get-WmiObject MSFT_NetTransportConnection  -Namespace "root/StandardC ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Get-WmiObject], ManagementException
    + FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

C:\Users\Justin Dearing> Get-WmiObject MSFT_NetTransportConnection  -Namespace "fff"
Get-WmiObject : Invalid namespace "fff"
At line:1 char:1 …
Run Code Online (Sandbox Code Playgroud)

powershell wmi-query

1
推荐指数
1
解决办法
1789
查看次数