Powershell get-netadapter与frrom get-wmiobject win32_networkadapter不同

时间:2014-10-15 07:14:38

标签: powershell wmi

我正在尝试查询物理网络适配器,我看到不同方法的不同结果

get-wmiobject win32_networkadapter  -Filter "NetEnabled='True' and  PhysicalAdapter='True'"| select netconnectionid, name, netconnecionstatus

返回

get-wmiobject win32_networkadapter

get-netadapter -physical

仅返回

enter image description here

我假设-physicalPhysicalAdapter='True'相同但从结果中看似乎不是这种情况。为什么呢?

2 个答案:

答案 0 :(得分:1)

cmdlet返回不同的数据类型:

[PS]> (Get-NetAdapter -Physical).GetType().FullName
Microsoft.Management.Infrastructure.CimInstance

[PS]> (Get-WmiObject -Class "Win32_NetworkAdapter").GetType().FullName
System.Object[]

[PS]> (Get-WmiObject -Class "Win32_NetworkAdapter")[0].GetType().FullName
System.Management.ManagementObject

我不确定我是否可以在这里进行CimInstance-vs-WMI讨论,所以你可能想从阅读这些博客开始:

cmdlet可能会在幕后做不同的事情,但这并不一定能解释为什么您使用一种方法看到更多接口。可能只是Get-WMIObject返回的某些接口是“隐藏”接口。请注意,Get-NetAdapter支持-IncludeHidden切换。

  

Get-NetAdapter

     

Get-NetAdapter cmdlet获取基本的网络适配器属性。   默认情况下,仅返回可见的适配器。

答案 1 :(得分:0)

由于我没有安装Windows 8/2012,因此无法验证用于Get-NetAdapter的确切xml我无法在此处发布,但它可能正在执行的操作是遵循该cmdlet的默认格式设置模板。

它基本上是一个XML文件,用于决定要显示的属性以及如何格式化它们。

WMI对象没有任何东西,因为它不是直接cmdlet的产品,它只是从wmi类中提取信息。