Tag: wmi query

什么是常见的WMI查询

我正在构建一个C#监视器应用程序,它使用WMI来获取远程计算机的一些性能细节。 什么是一些很好的WMI查询来获取有用的统计数据,如CPU负载,RAM使用率,HDD可用空间等。 例如,您可以使用查询“SELECT * FROM Win32_Processor”从属性“LoadPercentage”获取CPU负载。 还有哪些其他有用的属性和查询?

如何从远程计算机的驱动器获取可用的FreeSpace?

我正试图从远程计算机的D驱动器中获取FreeSpace。 接近尾声,我收到一个ManagementException未被用户代码“Not Found”处理 这是给出错误的行:fs = m [“FreeSpace”]。ToString(); 这是我的代码: ConnectionOptions oConn = new ConnectionOptions(); oConn.Username = “username”; oConn.Password = “password”; oConn.Authority = “ntlmdomain:XXX”; ManagementScope scope = new ManagementScope(“\\\\Remote_Computer\\root\\CIMV2”, oConn); scope.Connect(); ObjectQuery query = new ObjectQuery(“SELECT DeviceID, VolumeName FROM Win32_LogicalDisk where DeviceID = ‘D:'”); ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query); ManagementObjectCollection queryCollection = searcher.Get(); foreach (ManagementObject m […]

使用WMI查询“RPC服务器不可用”

我有一个运行Server 2008 R2的Web服务器工作组,我正在尝试管理一个检查所有磁盘空间的脚本。 几个月前我在设置服务器的时候设置了这个,我相信它运行正常。 现在我去检查并且它给出了一个错误,说“RPC服务器不可用”。 该脚本是一个C#ASP.NET页面,虽然我在PowerShell中尝试过类似的调用,它也会出现同样的错误。 该脚本可以正常访问本地计算机的信息,但无法访问远程服务器信息。 我花了最后几个小时挖掘了我能找到的所有东西,但没有任何效果。 我已经为WMI(远程和本地),DCOM(远程和本地)以及我正在访问的计算机的整个驱动器设置了权限。 我使用了计算机名称,IP地址,完整的计算机名称(xxx.echomountain.com),并尝试在ConnectionOptions对象上进行多次模拟和身份validation设置。 我知道我使用的用户名/密码是正确的,因为我可以访问另一个的分片目录 我可以检查哪些可能导致此错误的任何想法? ConnectionOptions oConn = new ConnectionOptions(); oConn.Impersonation = ImpersonationLevel.Impersonate; oConn.EnablePrivileges = true; oConn.Username = username; oConn.Password = password; //oConn.Authentication = AuthenticationLevel.PacketPrivacy; string strNameSpace = @”\\”; if (srvname != “”) strNameSpace += srvname + “.echomountain.com”; else strNameSpace += “.”; strNameSpace += @”\root\cimv2″; ManagementScope oMs = […]

ManagementException – 无效的类

我有一个问题,询问WMI让我完全感到困惑。 我正在构建的应用程序将作为VMware View Agent一部分安装的WMI计数器用于VDI桌面。 计数器提供有关远程显示协议PCoIP的信息。 我有工作代码来查询计数器: ManagementObjectSearcher searcher = new ManagementObjectSearcher(); ObjectQuery generalQuery = new ObjectQuery(“SELECT * FROM Win32_PerfRawData_TeradiciPerf_PCoIPSessionGeneralStatistics”); // Many other queries… searcher.Query = generalQuery; foreach (ManagementObject obj in searcher.Get()) { // Total session duration ulong sessionDurationSec = Convert.ToUInt64(obj[“SessionDurationSeconds”]); // Get other items… } 此代码来自现有的.NET 3.5应用程序。 我现在已经创建了一个新的.NET 4.0应用程序,并且我使用完全相同的代码 – 每次都使用“Invalid Class”ManagementException失败。 我已经validation了应用程序权限是正确的,我也尝试在新的.NET 4.0应用程序中查询其他项目,如“Win32_Process”,它没有问题。 令人费解的是,计数器在perfmon和wmic中出现并正常工作: […]

参考类型’组件’声称它在’系统’中定义

试图在UWP应用程序中获取一些WMI对象。 在.net 4.6上运行VS2015。 我收到错误的ForEach和方法调用声明“引用类型’组件’声称它在’系统’中定义”,错误CS7069。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Management; namespace SystemInfo { class wmiObject { static osDetails Program() { ManagementObjectCollection osDetailsCollection = getWMIObject(“SELECT OSType, caption FROM Win32_OperatingSystem”); osDetails Details = new osDetails(); foreach (ManagementObject mo in osDetailsCollection) { Details.OSName = mo[“Caption”].ToString(); } osDetailsCollection = getWMIObject(“SELECT Description, NumberOfLogicalProcessors, L3CacheSize […]

WMI进程监视使用太多的CPU! 有更好的方法吗?

我需要观察在Windows机器上启动或停止某些进程的时间。 我目前正在进入WMI系统并每隔5秒查询一次,但由于WMI是WMI,因此每5秒就会产生一次CPU峰值。 有更好的方法吗? 我可以只列出正在运行的进程并通过System.Diagnostics命名空间将Exited事件附加到它们,但是没有用于创建的事件处理程序。

WMI – 从Win32_Product中选择需要很长时间

我使用WMI枚举已安装的应用程序,无论我如何构建它,这个块都需要相对较长的时间才能完成。 每次在我的环境中需要13秒。 是否有更好(更快)的方法来检查是否安装了程序? (我使用iTunes作为示例程序来检查) private static string Timestamp { get { return DateTime.Now.ToString(“HH:mm:ss.ffff”); } } private static void LoadInstalledPrograms() { List installedPrograms = new List(); Console.WriteLine(“0 – {0}”, Timestamp); ManagementObjectSearcher mos = new ManagementObjectSearcher(“SELECT * FROM Win32_Product”); Console.WriteLine(“1 – {0}”, Timestamp); ManagementObjectCollection managementObjectCollection = mos.Get(); Console.WriteLine(“2 – {0}”, Timestamp); foreach (ManagementObject mo in managementObjectCollection) { […]

如何构建WMI查询

我想找到名称以param1开头的结果,并以param2结尾但我的代码不起作用 string wmiQuery = string.Format(“SELECT CommandLine FROM Win32_Process WHERE Name LIKE ‘{0}%’ AND Name LIKE ‘%{1}'”, param1, param2); ManagementObjectSearcher searcher = new ManagementObjectSearcher(wmiQuery); ManagementObjectCollection retObjectCollection = searcher.Get(); 怎么了? 比较 string wmiQuery = string.Format(“SELECT CommandLine FROM Win32_Process WHERE Name LIKE ‘{0}%'”, param1); 效果很好