问题标签 [cim]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
powershell - CIM_USBDevice、CIM_USBHub 和 Win32_USBHub 有什么区别?
CIM_USB_Device
CimClass(es)和有什么区别CIM_USBHub
?它们都发出相同的类型并且似乎产生相同的对象集?
arrays - 没有 '.Count' 属性的对象 - 使用 @()(数组子表达式运算符)与 [Array] 强制转换
我正在尝试执行一些简单的 if 语句,但所有基于 [Microsoft.Management.Infrastructure.CimInstance] 的较新 cmdlet 似乎都没有公开 .count 方法?
不返回任何东西。我发现我可以将其转换为 [array],这使它按预期返回 .NET .count 方法。
这无需直接将其转换为先前 cmdlet 的数组即可工作:
解决此问题的推荐方法是什么?
一个不起作用的例子:
选项 A(转换为数组):
选项 B(使用数组索引):
选项 C(数组)-感谢 @PetSerAl :
基于 CIM 的 cmdlet 不公开 .Count 方法的原因是什么?处理此问题的推荐方法是什么?选项 B 对我来说似乎很复杂,而且很难阅读。选项 A 有效,但 powershell 不应该为我将其转换为数组吗?我是否以完全错误的方式解决这个问题?
powershell - Powershell 和 SCCM - 无法使用 CIM 进行 INNER JOIN 查询(__GENERIC CLASS 错误)
我目前正在开发一个 Powershell 模块来帮助我的同事,并且我可以更加“无缝”地使用 SCCM 和脚本(因为 SCCM Cmdlet 太慢,因此无法使用)。
在这个模块中,我创建了一个名为 Get-CMCollectionsAndFolder 的函数,它从 SCCM 中检索所有集合(使用类 SMS_Collection)。我还尝试将这些集合的 FolderName 和 ContainerNodeID 添加到该列表中,如 SMS_ObjectContainerItem 类中所示。
我所有的模块请求都是使用 CIM 完成的,但是由于某些奇怪的原因,我不能使下面编写的 JOIN 查询使用 CIM,只能使用 WMI。
所以,如果我运行这个:
我得到一个对象数组,包含那些属性:
然后我只需要“扩展” SMS_Collection 和 SMS_ObjectContainerNode 属性来获取我的信息,这还不错。
但是当我尝试相同的查询并用 Get-CIMInstance 替换 Get-WMIObject 时,我得到了那个错误:
我想我错过了一些明显的东西,但我显然没有看到。有人可以给我一个解决方案和/或这种行为的原因吗?我是 WMI 和 CIM 的菜鸟,仅在过去 3 周内与这些人一起工作,所以我还有很多东西要学。
谢谢!
powershell - WMI/CIM: 无法访问类
我有一个我试图访问的非标准 WMI 命名空间/类,但无法通过常规方式访问。使用参数时可以看到类,使用时-List
可以分配/访问类-List | Where-Object Name -eq 'Class'
,但无法通过Get-WmiObject -Namespace 'ROOT\Novadigm' -Class 'NVD_Agent'
(不返回任何内容)访问它
作品:
纳达:
问:为什么会这样?如何通过使用标准语法而不通过它来使其工作Where-Object
?
powershell - Get-CimInstance 多次重复输出
我正在尝试获取上次启动时间报告,并且我的脚本一直重复相同的输出 8 次,我确定它是语法错误。这是我所拥有的:
powershell - Invoke-CimMethod 的字符无效
我目前正在使用 PowerShell 脚本为我们的计算机创建带有 SCCM 的 ZTI 部署。脚本的最后一步是清除旧的 PXE 请求,以便计算机在下次重新启动时“可用于”新部署。我目前正在使用工作“正常”的 WMI 命令(除了即使对于不存在的机器它总是返回等于 0 的 StatusCode 的部分):
我正在尝试(出于好奇和其他目的)来调用相同的方法Invoke-CimSession
。可悲的是,我似乎无法构建正确的“参数”变量来发送到该方法。
我知道该方法需要一个哈希表,其中包含一个键“ResourceIDs”,其值为 MI_UINT32A 类型。
我尝试了多种方式来发送我的论点但没有成功。我知道哈希表很好,但值似乎是问题所在。我总是收到一条 CIMException 错误消息,说Web 服务管理器无法解析我的查询,因为存在无效字符,并且它无法将字符串转换为数字(大致从法语翻译而来):
到目前为止,我的代码如下所示:
我在我的哈希表上做了一个 .gettype() ,它确认我的选角(可能)很好:
我想解决方案很明显,但我看不出我做错了什么。所以任何帮助将不胜感激!
json - 解码 cim_bioselement 中在 WMI 等效项中明确的日期?
在 powershell 中,如果我这样做(gwmi win32_bios).releasedate | convertto-json
,我会得到"20171221000000.000000+000"
,这是有道理的 - 2017 年 12 月 21 日。
但是,如果我采用 CimInstanceProperties 列表中的等效元素,例如,
然后检查$a.value
,我得到
但做$a | ConvertTo-Json
产量
我猜想这两个日期是等价的,但我没有立即了解 jsonification 后 CIM 值的格式是什么。我可以从不同的机器上获取更多的 BIOS 日期并开始分析,但很好奇是否有人知道“他们的头顶上”的格式是什么。
我想了解格式的原因是因为如果我通常尝试通过
powershell - 无法使用 WQL 查询搜索目录子树
我正在尝试查找已登录用户的所有 .PST 文件。但是,我似乎无法添加到“驱动器”的路径。我想搜索 C:\users\ + $env:UserName 下的所有文件
此命令似乎在 C:\ 上找到所有 PST 文件
但是,当我将其更改为:
甚至只是:
我收到以下错误:
Get-CimInstance : 在 C:\Users\mntle2\Documents\PSTMig.ps1:2 char:8 + $Res = Get-CimInstance CIM_DataFile -filter "Drive='c:\users\' AND ex ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [Get-CimInstance], CimException + FullyQualifiedErrorId : HRESULT 0x80041017,Microsoft.Management.Infrastructure.CimCmdlets.GetCimInstanceCommand
有人可以帮我解决这个问题吗?
c# - C# 中的解耦 MI 提供程序
所以我继承了三个用 C# 编写的 Windows NT 服务。现在的任务之一是添加 WMI 数据,以便可以在我们的监控软件中跟踪 NT-Service 的状态。
搜索互联网并没有为我提供如何在 .Net (4.7) 中创建解耦 MI 提供程序的任何示例?但是,我有很多关于 WMI (v1) 的旧示例。但微软不建议再使用该技术。我也找不到正确的术语,我见过 MI、MMI、WMIv2 和 CIM、CIMv2、WMI.Net 2.0 Provider Extensions...
我不是在寻找命名空间 System.Management.(Instrumentation),而是在寻找Microsoft.Management.Infrastructure。Microsoft的示例 使用C++ 而不是 C# 提供程序。
非常感谢您对样本的任何帮助!
powershell - CIM 与 WMI 返回不同的信息
我试图利用 CIM 的内置并行处理来获取有关给定计算机子网的所有已安装打印机的信息。该脚本比我的 WMI 变体运行得更快,但不会返回相同的信息,并且并不总是返回与Get-WmiObject
调用一样多的信息。
编辑:脚本丢弃的信息是关于整个计算机的信息。
这是 CIM 版本:
这是 WMI 版本:
我们有时需要针对多个子网运行此脚本。我转向 CIM 会话,因为它将脚本的总运行时间减少到始终低于 5 分钟,但如果它不会返回所有信息,最好等待。
有人知道如何防止 CIM 丢失信息吗?
应该注意的是,这些机器上默认情况下未启用 WinRM,脚本必须使用以下命令强制启用 CIM。