Articles of wmi

WMIfunction的“状态”返回是空的

我正在将VBS中的安装程序转换为C#程序。 在这个安装中,我必须用DISM激活一些Windowsfunction。 "cmd.exe", "/C Dism /Online /Enable-Feature /FeatureName:WAS-ProcessModel" 我以这种方式激活了他们。 当我检查他们manualy dism /online /get-featureinfo /featurename:WAS-ProcessModel 在命令提示符下,然后我得到function的信息,包括状态。 (状态:激活) 但是当我试图通过我的程序来获取它的状态返回只是空的。 这里是我的程序的相关部分: ManagementScope scope = new ManagementScope("\\\\.\\ROOT\\cimv2"); //create object query ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_OptionalFeature Where Name=\"WAS-ProcessModel\""); //create object searcher ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query); //get a collection of WMI objects ManagementObjectCollection queryCollection = searcher.Get(); […]

确定通过WMI运行的GPU

我正在尝试编写一个python脚本来确定哪个GPU(专用或集成的)当前正在运行。 我已经设法通过运行dxdiag并parsing每个gpu设备的模式输出来实现目前的工作,但是这太耗时了。 有谁知道dxdiag如何获取这些信息? 有没有办法通过Windowspipe理工具获取信息? 任何帮助表示赞赏。 谢谢

如何合并Get-CimInstance和Get-WMIObject函数的输出

我有2个PowerShell脚本,我在下面提到。 我正在寻找一种方法来结合这两个脚本。 但是,我无法这样做,因为其中一个脚本使用CIM方法,另一个使用WMI方法。 我正在尝试完成的是提供最后一次重启时间和可用空间(用户必须input服务器名称,按Enter显示最后一次重启时间和可用空间)。 脚本1(CIM方法): $Server = Read-Host -Prompt 'Input your server name' Get-CimInstance -ClassName win32_operatingsystem -ComputerName $Server | select csname, lastbootuptime Read-Host -Prompt "Press Enter to exit" 脚本2(WMI方法): $Server = Read-Host -Prompt 'Input your server name' Get-WMIObject Win32_Logicaldisk -ComputerName $Server | Select PSComputername,DeviceID, @{Name="Total_Size_GB";Expression={$_.Size/1GB -as [int]}}, @{Name="Free_Space_GB";Expression={[math]::Round($_.Freespace/1GB,2)}} Read-Host -Prompt "Press Enter to exit"

WMI中数据库条目的更新(以及更频繁)如何?

我们需要为我们的Windows客户端机器devise一个监控应用程序,并且正在追踪有关WMI体系结构的一些信息。 我们目前的计划是使用相当简单的VBScript脚本定期查询数据库,将相关信息写入平面文件,以便稍后传输到中央服务器(所有重要的分析和报告已经存在于我们的非Windows机器上。 我试过在MSDN和networking上寻找这个问题的答案,但所有的文章似乎特别“蓬松” – 很多“如何使用它”,但很less“如何在内部工作”。 以一个VBScript段为例: set wmi = getObject("winmgmts:\\.\root\cimv2") set itemCpu = wmi.get("Win32_PerfRawData_PerfOS_Processor.Name='_Total'") n = itemCpu.PercentProcessorTime 要么: set wmi = getObject("winmgmts:\\.\root\cimv2") set colMem = wmi.execQuery( "select AvailableKBytes from Win32_PerfRawData_PerfOS_Memory",,48) 现在,我明白了,这些数据发送到CIM数据库并检索相关条目,我认为 收集到该数据库中的信息和提取该数据库是不相关的。 换句话说,无论是否有人从所述数据库请求信息,统计信息都被Windows收集并写入数据库。 我的理解最好总结为: +————+ req/ ======== | Monitoring | resp / \ stats +————+ | Processes | <——-> < Database > <——– | Collectors […]

如何从远程计算机获取CommonApplicationData?

我想在远程机器上获得“CommonApplicationData”的path。 这是本地版本 Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) 但是,我怎么做远程? 也许有一些WMI?

Windows RPC调优

我正在使用WMI来监视数百个主机。 我每5秒轮询一次CPU的使用情况。 我正在使用C#的线程池来运行当前调度的适当的WMI查询。 通常,运行查询的线程不超过30个。 有时候会有16秒的间隔,而不是5秒,没有明显的CPU使用率。 由于CPU利用率不足,我怀疑是RPC还是TCP / IP栈的瓶颈。 不过,我认为这不是TCP / IP堆栈,因为连接永久保持打开状态。 所以我怀疑是在监控机器上的RPC的瓶颈。 在监控机器上可以进行RPC调优吗? 更新1: 在我发布之前,我已经做了一些.NET调优。 我已经使用ThreadPool.SetMinThreads(200, 200)和ThreadPool.SetMaxThreads(300,300)调用调整了ThreadPool 。 我正在使用TaskCreationOptions.LongRunning | TaskCreationOptions.PreferFairness创build的Task对象 TaskCreationOptions.LongRunning | TaskCreationOptions.PreferFairness 。

如何在不同域的远程计算机上运行powershell命令

我想在几台服务器上运行几个脚本,但问题是它们都在不同的域上。 如果他们在同一个域,那么我可以运行它是Powershell,但跨域如何做到这一点? 任何人都可以对此有所了解吗?

WMI调用方法

我正在尝试使用WMI更改英特尔networking适配器设置。 访问类工作正常,但根据英特尔文档页40我需要调用两种方法,以应用这些更改。 所以IANet_NetService类应该有BeginApply和Apply方法。 当我使用PowerShell命令检查这个命令get-wmiobject -namespace root\intelncs2 -class IAnet_NetService | get-member get-wmiobject -namespace root\intelncs2 -class IAnet_NetService | get-member我可以确认这些方法是存在的。 英特尔文档说我应该枚举IANet_NetService中的单个实例。 所以当我使用CreateInstanceEnum方法时,它会在枚举中给我一个结果,但是当我尝试枚举这个实例的方法时,它不会find任何结果。 后来我尝试使用没有结果的CreateClassEnum 。 最后,我尝试了一个简单的GetObject调用来获取IANet_NetService项目。 有了这个项目,我也能够枚举方法并findBeginApply和Apply方法。 也可以调用GetMethod来接收签名信息。 对于BeginApply方法,根据Intel文档,它没有input参数是正确的。 所以我尝试使用pService->ExecMethod(L"IAnet_NetService", L"BeginApply", 0, 0, 0, &pOutInst, 0);执行此方法pService->ExecMethod(L"IAnet_NetService", L"BeginApply", 0, 0, 0, &pOutInst, 0); 它返回WBEM_E_INVALID_METHOD_PARAMETERS 。 MSDN说这可能会返回时,input参数是错误的,或者我缺less一个[静态]限定符的方法。 input参数是正确的,但我不知道在这种情况下缺less[静态]限定符的含义。 任何人都知道如何调用这个方法?

公开Windows服务器pipe理界面的首选技术?

我贡献给发布数据统计信息,连接状态和pipe理命令供pipe理客户端使用的C ++和C#服务器集群。 目前的实现使用自定义中间件。 服务器和客户端的代码都可以更改。 我正在考虑迁移到一些标准的pipe理解决scheme,以简化代码和提高稳定性。 使用第三方工具的可能性也是一个优点。 我应该使用什么技术来pipe理界面… WMI? 这似乎是默认的,但我没有看到很多目前的书籍或文章。 或者我应该公开一些常见的Web服务? 要么?

在WMI脚本API中,“Wbem”和“SWbem”是什么意思?

在Windows Management Instrumentation(WMI)脚本API中, 常量名称以“Wbem”开头, 对象名称以“SWbem”开头。 这些缩写代表什么?