Get-DnsClientServerAddress
打印:
InterfaceAlias Interface Address ServerAddresses
Index Family
-------------- --------- ------- ---------------
Ethernet0 3 IPv4 {192.168.0.1}
Get-DnsClientServerAddress | select-object AddressFamily
打印:
AddressFamily
-------------
2
问题:如何使用枚举字符串而不是数字来实现输出(如下所示:)
AddressFamily
-------------
IPv4
答案 0 :(得分:1)
您可以创建自定义选择表达式,该表达式使用相应的字符串值更改地址系列编号值。正如@Ansgar建议您可以使用查找表$af
来切换出这些值。
$af = @{'2'='IPv4';'23'='IPv6'}
Get-DnsClientServerAddress | Select InterfaceAlias,InterfaceIndex,@{
Name="AddressFamily";
Expression={$af[$_.AddressFamily.ToString()]}
},ServerAddresses
如果您将此输出捕获到变量中,则可以像$Variable.AddressFamily
那样选择地址系列,并且您将获得以太IPv4
或IPv6
而不是其数值。< / p>
答案 1 :(得分:1)
AddressFamily显示值使用我们也可以使用的内部枚举:
Get-DnsClientServerAddress |
Select InterfaceAlias, @{N='AddressFamily'; E={[Microsoft.PowerShell.Cmdletization.GeneratedTypes.DnsClientServerAddress.AddressFamily]$_.AddressFamily}}
InterfaceAlias AddressFamily -------------- ------------- Ethernet IPv4 Ethernet IPv6 Loopback Pseudo-Interface 1 IPv4 Loopback Pseudo-Interface 1 IPv6 isatap.{B9F500B1-943E-4B8C-BCAF-A669F1B0969F} IPv4 isatap.{B9F500B1-943E-4B8C-BCAF-A669F1B0969F} IPv6 Teredo Tunneling Pseudo-Interface IPv4 Teredo Tunneling Pseudo-Interface IPv6
要快速获取长枚举名称,只需在PS ISE中键入[addressf
,然后按 Ctrl - Space 即可显示候选人(Win10中的两个),然后在其工具提示中选择cmdlet
的那个(Win10中的第二个)。