我正在尝试查询物理网络适配器,我看到不同方法的不同结果
get-wmiobject win32_networkadapter -Filter "NetEnabled='True' and PhysicalAdapter='True'"| select netconnectionid, name, netconnecionstatus
返回
而
get-netadapter -physical
仅返回
我假设-physical
与PhysicalAdapter='True'
相同但从结果中看似乎不是这种情况。为什么呢?
答案 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 cmdlet获取基本的网络适配器属性。 默认情况下,仅返回可见的适配器。
答案 1 :(得分:0)
由于我没有安装Windows 8/2012,因此无法验证用于Get-NetAdapter的确切xml我无法在此处发布,但它可能正在执行的操作是遵循该cmdlet的默认格式设置模板。
它基本上是一个XML文件,用于决定要显示的属性以及如何格式化它们。
WMI对象没有任何东西,因为它不是直接cmdlet的产品,它只是从wmi类中提取信息。