标签: wmi-query

如何在WQL中对列进行求和?

我想使用WMI计算机器上可用的总磁盘空间和可用磁盘空间.并查询是=>从Win32_LogicalDisk中选择Size,FreeSpace.

此查询返回多行,因为机器具有多个驱动器.如果我总结这些列,那么我将得到预期的结果.我可以通过查询轻松地在sql中实现这一点

SELECT sum(Size),sum(FreeSpace)FROM Win32_LogicalDisk

但它给了wql错误.

如何在wql中实现相同的功能?

wmi wmi-query

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

C++:在Windows中监视进程创建和终止

我碰巧在这里看到了以下部分代码.

$Obj.ExecNotificationQueryAsync($hObj, "SELECT * FROM __InstanceCreationEvent WITHIN 0.5 WHERE TargetInstance ISA 'Win32_Process'")
$Obj.ExecNotificationQueryAsync($hObj, "SELECT * FROM __InstanceDeletionEvent WITHIN 0.5 WHERE TargetInstance ISA 'Win32_Process'")


Switch $OB.Path_.Class
            Case "__InstanceCreationEvent"
                ConsoleWrite("+~>" & _ProcessGetPath($OB.TargetInstance.ProcessID) & @CR)
            Case "__InstanceDeletionEvent"
                ConsoleWrite("!~>" & $OB.TargetInstance.ProcessID & @CR)
        EndSwitch
Run Code Online (Sandbox Code Playgroud)

我使用相同的WQL查询来监视进程C++.是否存在类似的东西C++,我可以知道它是创建还是终止进程.我尝试使用__CLASS,但它输出为Win32_Process.我在编码MSVS2010.

请帮忙.Thankyou

编辑1:添加了WQL查询

hres = pSvc->ExecNotificationQueryAsync(
        _bstr_t("WQL"), 
        _bstr_t("SELECT * " 
            "FROM __InstanceDeletionEvent WITHIN 1 "
            "WHERE TargetInstance ISA 'Win32_Process' "), 
        WBEM_FLAG_SEND_STATUS, 
        NULL, 
        pStubSink);


     hres = pSvc->ExecNotificationQueryAsync( …
Run Code Online (Sandbox Code Playgroud)

c++ wmi process wmi-query wql

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

从字符串中获取特定位置的最佳方法

我已经看了很多关于这个问题的不同看法,答案在某种程度上取决于问题是如何表达的.您可以使用拆分或使用正则表达式来执行此操作.

我正在做的是使用WMI返回主板的BIOSVersion.无论出于何种原因,制造商都会提供更多内容,而不仅仅是版本号.在整个字符串中,版本号位于句点分隔字符串的第三个位置.在第二个位置的值是ALWAYS 86A.在此示例中,实际上是版本0460.SIX7910J.86A.0460.2012.0327.1627.

那么,对于我在做什么,这将是"最佳实践"?查询表达式中的正则表达式,循环使用split或其他我尚未找到的结果?

作为参考,这是我正在使用的C#WMI代码.示例代码使用Windows窗体,因为这是WMI代码创建者输出的内容.我将在WPF项目中使用它,但我不知道这对于问题的本质意味着太多.我想我可以找出所需的代码,但我想要了解哪种方式是最好的方法.

感谢您的任何帮助,您可以提供.如果代码没有全部出现在代码块中,我会提前道歉.我以为我遵循了如何做的说明,但在代码块的示例显示中,它在代码块中有一点代码,然后转到普通文本然后返回到代码块.希望实际渲染更清晰.

using System;
using System.Management;
using System.Windows.Forms;

namespace WMISample
{
    public class MyWMIQuery
    {
        public static void Main()
        {
            try
            {
                ManagementObjectSearcher searcher = 
                    new ManagementObjectSearcher("root\\CIMV2", 
                    "SELECT BIOSVersion FROM Win32_BIOS"); 

                foreach (ManagementObject queryObj in searcher.Get())
                {
                    Console.WriteLine("-----------------------------------");
                    Console.WriteLine("Win32_BIOS instance");
                    Console.WriteLine("-----------------------------------");

                    if(queryObj["BIOSVersion"] == null)
                        Console.WriteLine("BIOSVersion: {0}", queryObj["BIOSVersion"]);
                    else
                    {
                        String[] arrBIOSVersion = (String[])(queryObj["BIOSVersion"]);
                        foreach (String arrValue in arrBIOSVersion)
                        {
                            Console.WriteLine("BIOSVersion: {0}", arrValue);
                        }
                    }
                }
            }
            catch (ManagementException e)
            {
                MessageBox.Show("An error occurred while …
Run Code Online (Sandbox Code Playgroud)

c# regex wmi wmi-query winforms

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

测试是否使用PowerShell共享目录?

这似乎是一件非常容易的事; 但是,我对WMI一无所知.我如何确定是否通过我的一台服务器上的网络共享目录(使用PowerShell)?另外,是否有一个快速入门,我可以阅读,以获得WMI?我真的希望能够在编写脚本时使用它,但是大多数资源都没有显示PowerShell的任何示例.

目前,我正在检查"服务器"服务是否正在运行; 并检查特定组是否具有该目录的权限.

    $serversrvc = Get-Service -Name "Server"
    $dirpath = "C:\My\Path\"
    $pathacl = (Get-Acl -path $dirpath).Access
    $group = "Domain\User"

    # Test if the "Server" service is running
    If ($serversrvc.Status -eq "Running")
    {
        echo '"Server" service is running.'
    }
    Else
    {
        echo '"Server" is NOT running.'
    }

    # Test if the $dirpath exists
    If (Test-Path $dirpath)
    {
        echo "$dirpath exists."
    }
    Else
    {
        echo "$dirpath does not exist."
    }

    # Test if $group has permssions on $dirpath
    foreach ($id in …
Run Code Online (Sandbox Code Playgroud)

powershell wmi wmi-query powershell-2.0

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

如何从WMI对象引用中获取WMI对象?

类似于这个问题, 除了没有给出关于从参考中获取对象的主要问题的答案.

例如:

PS C:\Users\admin> Get-WmiObject -Namespace $namespace -Class $class


    ...

IsActive     :  1
oA: \\.\ROOT\abc\abc\ABC:abc.xyz="tst2"
oB : \\.\ROOT\abc\abc\ABC:abc.xyz="tst3"
PSComputerName         : admin-test2
Run Code Online (Sandbox Code Playgroud)

oA并且oB是引用,因此在powershell中作为字符串出现.有没有办法在powershell中使用WMI查询获取它们所代表的对象?

powershell wmi wmi-query

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

标签 统计

wmi ×5

wmi-query ×5

powershell ×2

c# ×1

c++ ×1

powershell-2.0 ×1

process ×1

regex ×1

winforms ×1

wql ×1