PowerShell:Get-CIMInstance Vs Get-WMIObject
作者:互联网
背景
项目中有个需求,要通过PowerShell获取Server上某个服务的描述
Get-Service方法居然不返回该属性,夭寿
Get-CIMInstance Vs Get-WMIObject
那获取系统更详细的信息,自然也有对应的命令
Get-WmiObject win32_service | ?{$_.Name -eq 'YOURSERVICENAME'} | select Description
Get-CimInstance win32_service | ?{$_.Name -eq 'YOURSERVICENAME'} | select Description
这两个命令看上去差异很小,我该使用哪个呢?
我们需要了解下WMI和CIM的相关知识
CIM vs WMI
Common Information Model (CIM) 是开源的标准,提供systems, networks, applications and services管理信息的定义,由 Distributed Management Task Force (DMTF)开发和维护。
Windows Management Interface (WMI) 是微软针对windows平台,对CIM的一种实现。但是微软进加入了DCOM和RPC。WMI cmdlets使用DCOM访问远程机器,但DCOM这玩意属于“防火墙不友好”,就是要使用很多端口,你得配置好多防火墙规则,远程机器必须允许135, 445, 1024-1034端口,不方便不说还不安全。
微软在2012年发布了Windows Remote Management(WinRM),使用Web Services for Management protocol (WS-Man协议),这个WSMan协议使用5985端口(HTTP)和5986端口(HTTPS),防火墙非常友好。对应的新的cmdlets也在PowerShell 3.0 中加入。
整体关系如下:
到底使用哪个?
毫无疑问,应该使用Get-CIMInstance
参考
https://blog.ipswitch.com/get-ciminstance-vs-get-wmiobject-whats-the-difference
https://devblogs.microsoft.com/scripting/should-i-use-cim-or-wmi-with-windows-powershell/
https://techspi.azurewebsites.net/2019/03/24/wmi-vs-cim/
标签:WMIObject,Management,CIMInstance,Get,端口,CIM,DCOM,WMI 来源: https://www.cnblogs.com/talentzemin/p/15342604.html