例如,键入cmdlet Get-DnsClientServerAddress
时,我将获得PC拥有的所有接口
InterfaceAlias Interface Address ServerAddresses
Index Family
-------------- --------- ------- ---------------
Ethernet 7 IPv4 {10.10.15.40, 10.10.25.44}
因此,当我输入Get-DnsClientServerAddress | where AddressFamily -Like "4"
时,我希望看到以太网适配器。
但是由于任何原因它都没有出现。所以我输入了Get-DnsClientServerAddress | select AddressFamily
,我得到的是
AddressFamily
-------------
2
23
2
23
有人可以向我解释吗?
答案 0 :(得分:3)
如您所见,AddressFamily
在内部使用(不太明显的)编号方案进行了分类,其中IPv4地址的类型为“ 2”。这来自基础的WMI类型(MSFT_DNSClientServerAddress),对于PowerShell来说不是问题。
默认显示可以将其翻译为IPv4
等来帮助您,但是您不能对此进行过滤,因为它仅用于显示。但是,如果使用正确的值,您仍然可以过滤:
Get-DnsClientServerAddress | Where-Object AddressFamily -Like 2
这种用于显示目的的数据格式始终在PowerShell中发生,并且通过Format.ps1xml文件实现。例如,以表和列表格式比较Get-Process
中工作集值的输出:
PS C:\> Get-Process powershell
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
662 31 97928 110256 1.27 11452 2 powershell
PS C:\> Get-Process powershell | Format-List *
Handles : 705
VM : 2204040044544
WS : 113082368
PM : 100356096
NPM : 31512
该属性(为方便起见,由PowerShell自行添加)称为WS
,但在表中显示为WS(K)
,实际值以字节为单位存储,但以KB显示,因此有些默认输出正在进行操作。
答案 1 :(得分:1)
在我的评论之后,我改用Get-NetIPAddress。
Get-NetIPAddress -InterfaceAlias "Ethernet" | Select-Object FamilyAddress