一个比较典型的WMI查询

 

Get-WmiObject win32_bios -ComputerName server1, server2 | Format-Table `
  @{n='Hostname';e={$_.__server}},
  @{n='SerialTag';e={$_.SerialNumber}},
  @{n='OS';e={Get-WmiObject win32_operatingsystem -ComputerName $_.__server | select -ExpandProperty name}}

 

转载于:https://www.cnblogs.com/IvanChen/p/4493682.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用 C++ 通过 WMI 查询网卡的所有信息,您可以使用以下步骤: 1. 引用 WMI 类库。您可以在 Visual Studio 的“项目”菜单中选择“添加引用”,然后选择“System.Management”来添加类库。 2. 初始化 COM 库。您可以在程序的开头调用 CoInitializeEx 函数来初始化 COM 库。 3. 使用 COM 对象获取 WMI 服务对象。您可以使用 CoCreateInstance 函数创建 IWbemLocator 接口实例,并使用该实例的 ConnectServer 方法连接到本地或远程计算机上的 WMI 服务。 4. 使用 WMI 查询语言 (WQL) 获取 Win32_NetworkAdapter 类的实例。您可以使用 IWbemServices 接口的 ExecQuery 方法并指定查询语句来获取 Win32_NetworkAdapter 类的实例。 5. 遍历每个网卡实例并获取其属性。您可以使用 IWbemClassObject 接口的 Get 方法获取每个实例的属性,并将其存储在 C++ 变量中。 以下是一个简单的示例代码,它演示了如何使用 C++ 获取本地计算机上所有网卡的名称和描述: ```cpp #include <iostream> #include <comdef.h> #include <Wbemidl.h> #pragma comment(lib, "wbemuuid.lib") int main() { // 初始化 COM 库 HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED); if (FAILED(hr)) { std::cerr << "Failed to initialize COM library. Error code: " << hr << std::endl; return 1; } // 获取 WMI 服务对象 IWbemLocator* pLocator = nullptr; hr = CoCreateInstance(CLSID_WbemLocator, nullptr, CLSCTX_INPROC_SERVER, IID_IWbemLocator, reinterpret_cast<LPVOID*>(&pLocator)); if (FAILED(hr)) { std::cerr << "Failed to create IWbemLocator object. Error code: " << hr << std::endl; return 1; } IWbemServices* pServices = nullptr; hr = pLocator->ConnectServer(_bstr_t(L"ROOT\\CIMV2"), nullptr, nullptr, 0, NULL, 0, 0, &pServices); if (FAILED(hr)) { std::cerr << "Failed to connect to WMI service. Error code: " << hr << std::endl; pLocator->Release(); return 1; } // 查询 Win32_NetworkAdapter 类的实例 IEnumWbemClassObject* pEnum = nullptr; hr = pServices->ExecQuery(_bstr_t(L"WQL"), _bstr_t(L"SELECT * FROM Win32_NetworkAdapter"), WBEM_FLAG_FORWARD_ONLY, nullptr, &pEnum); if (FAILED(hr)) { std::cerr << "Failed to execute WMI query. Error code: " << hr << std::endl; pServices->Release(); pLocator->Release(); return 1; } // 遍历网卡实例并获取属性 IWbemClassObject* pObject = nullptr; ULONG uReturned = 0; while (pEnum->Next(WBEM_INFINITE, 1, &pObject, &uReturned) == S_OK) { // 获取名称和描述 VARIANT varName, varDesc; hr = pObject->Get(L"Name", 0, &varName, nullptr, nullptr); if (FAILED(hr)) { std::cerr << "Failed to get Name property. Error code: " << hr << std::endl; pObject->Release(); continue; } hr = pObject->Get(L"Description", 0, &varDesc, nullptr, nullptr); if (FAILED(hr)) { std::cerr << "Failed to get Description property. Error code: " << hr << std::endl; VariantClear(&varName); pObject->Release(); continue; } // 输出名称和描述 std::wcout << L"Name: " << varName.bstrVal << std::endl; std::wcout << L"Description: " << varDesc.bstrVal << std::endl; // 释放对象和变量 VariantClear(&varName); VariantClear(&varDesc); pObject->Release(); } // 释放资源 pEnum->Release(); pServices->Release(); pLocator->Release(); CoUninitialize(); return 0; } ``` 请注意,这只是一个简单的示例,Win32_NetworkAdapter 类还有许多其他属性,您可以根据需要查询和获取它们。此外,WMI 查询是一种强大的技术,可以用于检索计算机上的各种系统信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值