如何过滤命令的输出? (电源外壳)

时间:2020-10-12 22:34:17

标签: powershell

我正在运行以下脚本

[System.Net.Dns]::GetHostEntry('') | Where-Object {$_.AddressList -like "IPv4*"}

哪个给我这个输出:

HostName                      Aliases AddressList                                
--------                      ------- -----------                                
SERVER1.domain.com {}      {REDACTED_IPv6, IPv4.x.x.x}

我想要的结果是这样

HostName                      Aliases AddressList                                
--------                      ------- -----------                                
SERVER1.domain.com                    {IPv4.x.x.x}

我该如何实现?

1 个答案:

答案 0 :(得分:3)

由于地址列表本身就是一个对象,因此您需要提取所需的信息。这样应该可以达到您想要的结果。

[System.Net.Dns]::GetHostEntry('') |
    Select-Object HostName,
                  Aliases,
                  @{n="AddressList";e={$_.addresslist.ipaddresstostring}}

[System.Net.Dns]::GetHostEntry('') |
       Select-Object HostName,
                     Aliases,
                     @{n="AddressList";e={($_.addresslist|where addressfamily -eq InterNetwork).ipaddresstostring}}

[System.Net.Dns]::GetHostEntry('') |
       Select-Object HostName,
                     Aliases,
                     @{n="AddressList";e={$_.addresslist -like "10.*"}}

[System.Net.Dns]::GetHostEntry('') |
       Select-Object HostName,
                     Aliases,
                     @{n="AddressList";e={$_.addresslist -match "\d+\.\d+\."}}