我当前的代码看起来像这样: define ( 'CPU_NAME', 'remote_server' ); $obj = new COM ( 'winmgmts:{impersonationLevel=impersonate}//' . CPU_NAME . '/root/cimv2' ); if ( is_object ( $obj ) ){ $process = $obj->execquery ( "SELECT * FROM Win32_Process" ); } 我将在哪里放置远程_server的登录凭据? 我看到这将需要用户名和密码,但我不确定如何实现. 任何帮助将不胜感激. 参考: http://us3.php.net/manual/en/class.com.php 解决方案
以下是关于 wmi 的编程技术问答
我已经在PowerShell中创建了两个函数,该功能创建了名称空间ROOT\CustomCMClasses和一个创建类Test的功能.这件作品正常: Param ( $Namespace = 'CustomCMClasses', $Class = 'Test' ) Function New-WMINamespaceHC{ if (Get-WmiObject -Namespace 'root' -Class '__NAMESPACE' | Where-Object {$_.Name -eq $Namespace}) { Write-Verbose "WMI Namespace 'root\$Namespace' exists" } else { Write-Verbose "Create WMI namespace 'root\$Namespace'" $Ns = [WMICLASS]'
我将WMI Publishing添加到.NET Framework 3.5基于"网络服务"帐户下运行的Windows服务. 根据 但是,当服务调用instrumentation.publish(mystatusclassinstance)时,它会抛出DirectoryNotFoundException; System.IO.DirectoryNotFoundException was unhandled Message: Could not find a part of the path 'C:\Windows\system32\WBEM\Framework\root\MyWMINamespace\MyService_SN__Version_1.0.3686.26280.cs'. ..所以看起来像system.management.smentrumentation尝试即时生成代码,并且在网络服务下运行时,它针对一个目录,网络服务没有权限. 最好的解决方案/解决方法
我正在编写一个perl脚本,该脚本将列出我系统中安装的hotfix,并在开始我的程序之前检查是否没有任何先决条件的hotfix; 因此,我需要能够列举系统中的热点列表; 解决方案 我自己想出了答案!! 提供了一个VBScript选项,提供了 perl版本像这样. use Win32::OLE qw( in ); my $machine = "."; my $WMIServices = Win32::OLE->GetObject ( "winmgmts:{impersonationLevel=impersonate,(security)}//$machine/root/cimv2" ) || die "cant call getobject"; my $HotFixCollection = $WMIServices->ExecQuery ( "select * from Win32_QuickFixEngineering" ) || die "Query Failed";
我有几个perl脚本,使我可以通过WMI监视远程Windows机器.现在,我可以检查CPU使用情况,内存使用情况,磁盘使用情况和安装软件.但是,如果我想在远程Linux计算机上做相同的工作怎么办?当然,没有WMI,所以我想我会使用类似的东西.我已经阅读了另一个旧 stackoverflow问题 Linux通过/proc 和/sys ,但是我可以从远程计算机查询它们吗?我该如何在perl中做到这一点?有专用模块吗? 编辑:为了澄清,脚本必须不含代理. 解决方案 检查以下内容: host.html mib.html 这将为您提供内存/磁盘用法: snmptable -v1 -c public localhost hrStorageTable snmptable -v1 -c public localhost .1.3.6.1.2.1.25.2.3 这将为您提供处理器的利用: snmptable -v1 -c public localhost h
我需要使用WMI收集Windows操作系统的内存数据.从这个意义上讲,我开发了一个Perl脚本来生成此类数据.但是,我想知道我的方法是否正确,还有什么选择.打算在Windows OS方面,收集数据的方法应尽可能广泛. 如果您不是一个Perlish,这就是我要检查的内容: MEM_USED = Win32_OperatingSystem->TotalVisibleMemorySize - Win32_OperatingSystem->FreePhysicalMemory SWAP_USED = (Win32_OperatingSystem->SizeStoredInPagingFiles - Win32_OperatingSystem->FreeSpaceInPagingFiles) / Win32_OperatingSystem->SizeStoredInPagingFiles 这是我的脚本: #!/bin/env perl use Win32::OLE; u
可能的重复: cpu使用wmi&c&c# 如何使用WMI在C#(.NET)中检索CPU使用%?是的,没有任何愚蠢的表演. 解决方案 performanceCounter是非常低成本的检索此信息的低成本方式.与WMI相反,WMI将为您提供 exkercect 相同的信息,但开销很多,因为它在com的顶部运行. 它的问题与PC完全相同,这就是为什么我猜您认为这是"愚蠢"的原因. CPU使用率百分比在一个间隔内测量.实际CPU使用率为0或100%,CPU永远不会以较低的速率故意运行.当有一个有效的线程要做时,它会完全孔运行代码.如果没有工作要做,即台式机的正常状态,则CPU将使用HLT指令关闭. 再次被唤醒. TaskMGR或PerMon中所示的CPU使用百分比是一秒钟内计算出的值.它以100%的时间与关闭时间的时间相比的时间.间隔长度非常重要.您制作的较短,"跳高"计算值获得.直到连续两次致电NextValue(),您将始终获得100%. 长话短说:您需要
我正在滚动自己的简单基于Web的perfmon,我对我可以获得的一些数据不满意,例如CPU使用情况,这些数据是通过SQL查询使用的.我可以很好地获取内存使用量...我将附上屏幕截图,因此您可以看到我目前的主/主/仪表板页面. 我当前正在使用WebCharts3D,我喜欢能够使用Ajax,更新图表,并且我有一个动态更新仪表板.是的,当然,我只需要获得几个性能计数器,所以我希望拥有基于网络的性能仪表板我不会杀死服务器. DECLARE @CPU_BUSY int, @IDLE int SELECT @CPU_BUSY = @@CPU_BUSY, @IDLE = @@IDLE WAITFOR DELAY '000:00:01' SELECT (@@CPU_BUSY - @CPU_BUSY)/((@@IDLE - @IDLE + @@CPU_BUSY - @CPU_BUSY) *1.00) *100 AS 'CPU' 我所获得的结果是0.0000,所以查询是错误的,或者我的CP
我想获得Windows服务的路径, var managementObjectSearcher = new ManagementObjectSearcher("Select * from Win32_Service where serviceName = MyService"); 此代码是其他服务的构造函数写的... 系统启动和运行时一切正常,但是如果我重新启动系统,则将系统放置此调用的秒表类,它表明该服务需要35-45秒才能开始. > 提高系统性能的任何建议... 解决方案 不存在Windows32_Services类,因此假设您使用的是 Win32_Service WMI类您可以改善性能,只能返回要使用的属性,在这种情况下,请更改您WQL句子 SELECT PathName FROM Win32_Service Where Name='MyService' 更新 对 @bacon 进行的观察是非常正确的构建win32_service的对象路径,
我是不同域控制器的查询事件日志,我必须在一段时间间隔后继续查询. 以下是我用来查询的代码. public static void FindAllLog(string machineName) { //EventLog log = new EventLog("", ""); //log. EventLog[] remoteEventLogs; // Gets logs on the local computer, gives remote computer name to get the logs on the remote computer. remoteEventLogs = EventLog.GetEventLogs(machineName); Console.WriteLine("Number of logs o
IM试图从Hyper-V服务器上的所有可用VM中检索信息.问题是,当我索要摘要信息时,我会得到一份无用的comobject. 我找不到获取实际摘要信息值的方法. 这是代码: import wmi conn = wmi.connect_server(server="xxxx", user="xxxx", password="xxx", namespace=r"root\virtualization\v2") client = wmi.WMI(wmi=conn) mgs = client.Msvm_VirtualSystemManagementService() summaries = mgs[0].GetSummaryInformation() print summaries # (0, [>, >, >]) 所以我尝试检索一个VirtualSy
我正在尝试使用PowerShell和WMI在VMware上运行的Windows VM上远程扩展C驱动器分区. 这些VM未启用WinRM,这不是一个选择. 我要做的是等效于在广告控制台中远程管理Active Directory计算机对象以扩展分区,但在PowerShell中. 我已经设法通过Win32 WMI对象提取分区信息,但尚未扩展部分. 有人知道如何在这样的驱动器上最大化c分区吗? 解决方案 先决条件: Sysinternals Suite的PSEXEC PowerShell 2.0或更高的PowerShell模块功能在远程计算机上 首先,通过psexec启用psremots: psexec \\[computer name] -u [admin account name] -p [admin account password] -h -d powershell.exe "enable-psremoting -force" 以下Pow
我正在尝试将从Windows Management接口检索到的DateTime值转换为Java(1.7)日期;自时代以来最终到达毫秒. 格式在此处指定. 我试图解析的一个例子是20160513072950.782000-420,即2016-05-13在07:29:50加上782毫秒,在我的本地时区(-420分钟= UTC-7小时).十进制后的数字是分数秒.从理论上讲,微秒的最多6位数字,但实际上只有前4位数字是非零的. 我最初尝试使用SimpleDateFormat cimDateFormat = new SimpleDateFormat("yyyyMMddHHmmss.SSS"); Date date = cimDateFormat.parse(s, new ParsePosition(0)); 我的理由是用SSS指定三位数将停止解析.不幸的是,这无效.在上面的示例中添加了许多超过782毫秒. 我最终通过将字符串修剪到所需字符时可以根据需要工作: Simp
我看到WMI非常强大,似乎能够返回PC硬件的大多数属性.我想在任何PC上显示可用的并行端口并找到其I/O地址 - 我知道通常是使用内核驱动程序完成的,但这是旧的需求 - 不要问!目前,我们查看设备管理器,然后必须输入其中显示的地址.我想使用WMI查找此信息. 1 ,有一组出色的WMI课程. 谢谢. 解决方案 必须尝试从WMI中提取复杂信息.我试图在我的PC上找到并行端口地址,这是报告: 首先,我询问了Win32_ParallealportPort类以找到所有并行端口. (在他的帖子中使用与Pruz相同的代码):"从Win32_Parallealtorport中选择 * *.结果是(我的系统中只有一个并行端口): instance of Win32_ParallelPort { Availability = 3; Caption = "LPT1"; ConfigManagerErrorCode = 0; ConfigManagerU
我正在尝试找出WMI中是否有一个将返回OS体系结构(即32位或64位)的位置,该架构将跨Windows的"所有"版本使用.当我发现以下内容时,我以为我已经弄清楚了我的win2k8系统: Win32_OperatingSystem / OSArchitecture 我错了.该字段似乎不存在于Win2K3系统上. argh! 那么,是否有人知道WMI中的另一个领域,在服务器版本中"相同"?如果没有,那是相同的注册表呢?我正在使用仅允许我配置简单字段查询的工具,因此我无法使用复杂的脚本执行. 任何帮助将不胜感激. 解决方案 搜索和测试后,我想出了一个"修复/答案",尽管这并不是我所希望的.在我在Win2K3&Win2K8的实验室中,从通过注册表中执行查询似乎是一致的.这是我从以下位置获取信息的地方: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment KE
我想检查我使用的操作系统类型以及哪种处理器.这应该是运行时间检查.我尝试使用 System.Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE") 和 System.OperatingSystem osInfo2 = System.Environment.OSVersion; Console.WriteLine(osInfo2.ToString()); ,但这只是VS正在运行的环境. 有人告诉我使用WMI检查它,但我找不到. 有人可以帮我吗? 解决方案 是的,WMI是做这种事情的最佳方法 您可以使用它来检索OS信息: ManagementObjectSearcher objMOS = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_OperatingSystem"); 其他解决方案 检索OS信息:
昨天我问这个有关在OpenEDGE中启动命令行的问题进度-4GL并捕获结果. 尽管效果很好,但我想知道为什么我不会简单地使用WMI API:如有关WMI API的此网页对于与Windows相关的编程环境,处理ActiveX对象是可能的(请参阅"开发者受众群"一章). ). 我正在使用AppBuilder在OpenEDGE Progress-4GL,第11.6版中工作.这使得可以在窗口上添加ActiveX控件,但是可用控件的列表没有提及任何WMI(或Windows Management)相关控件,因此我想我需要在计算机上浏览它(或下载),这是一个问题: 哪个 *.ocx文件涵盖WMI API(我该如何使用)? 对第一个答案发表评论后编辑:AppBuilder的工具菜单 这是我的AppBuilder的"工具"菜单的样子: 预先感谢 多米尼克 解决方案 首先,正如迈克(Mike)所提到的,不要打扰沿着OCX道路. appbuilder用户的
您知道为什么Bellow块的块将在某些计算机上否定"无法将类型(null)的变体(null)转换为类型(olest)",而不是全部将它们转换为类型(OLEST),而不是所有计算机上的3个计算机,而是十个计算机中的3个计算机会生成错误消息. function GetWMIstringSW(const WMIClass, WMIProperty:string): string; const wbemFlagForwardOnly = $00000020; var FWbemObjectSet: OLEVariant; FWbemObject : OLEVariant; oEnum : IEnumvariant; iValue : LongWord; LNode : TTreeNode; LNode2 : TTreeNode; begin Result:=''; FWbemObjec
为什么下面的脚本提出以下错误? " add-member:由于一个或多个丢失 无法处理命令 强制性参数:InputObject. + $ obj = add -member + categoryInfo:InvalidArgument :( :) [add-member],parameterBindingException +完全QualifiedErrid:Microsoft.powershell.commands.addmembercommand" ) 脚本 # Receives the computer name and stores the required results in $obj. Function WorkerNetworkAdaptMacAddress { Param($ComputerName) $colItems = GWMI -cl "Win32_NetworkAdapterConfiguration" -name
我想获得NVIDIA视频卡的驱动程序版本. 因此,我使用了WMI,并从" win32_videocontroller"类的"驱动程序" OBEJCT中获取数据. 但这就像" 9.18.13.1106"(文件版本),我想要的就是" 311.06"(Treiber版本). 我在哪里可以获得这些信息? 如果在WMI上是不可能的,我想知道其他方法. 谢谢. 解决方案 您可以使用NVIDIA的 tesla部署套件进行此操作.您可以使用这样的代码检索内部驱动程序版本(您习惯于为NVIDIA驱动程序看到的版本): #include #include #include #include #include namespace { typedef nvmlReturn_t (*init)(); typedef nvmlReturn_t (*shutdown)(); typedef nvm