【问题标题】:output as a single row from dhcp output从 dhcp 输出作为单行输出
【发布时间】:2013-10-09 17:04:48
【问题描述】:

我正在通过 powershell 运行 dhcp 查询。我正在获取我想要查看的信息,但不是我需要的格式。
样本: 我正在使用命令的数据:

netsh dhcp server \\dhcpserver scope 10.0.1.0 show clientsvq

获取输出

10.0.1.21    - 255.255.255.0  -00-23-7d-e9-45-58   -2/19/2016 5:13:50 PM    -D -BUILD-01.example.com -NonQuarantined -INACTIVE -No
10.0.1.22    - 255.255.255.0  -00-23-7d-e9-54-38   -2/19/2016 5:13:55 PM    -D -BUILD-02.example.com -NonQuarantined -INACTIVE -No
10.0.1.23    - 255.255.255.0  -00-23-7d-e8-cf-80   -6/11/2016 11:30:30 AM   -D -BUILD-03.example.com -NonQuarantined -INACTIVE -No

我想要的输出是这样的:

10.0.1.21 00237de94558 BUILD-01.example.com
10.0.1.22 00237de95438 BUILD-02.example.com
10.0.1.23 00237de8cf80 BUILD-03.example.com

尝试通过提取所需列并去除特殊字符来格式化输出,命令:

netsh dhcp server \\dhcpserver scope 10.0.1.0 show clientsvq | findstr example.com | foreach {"$(($_ -split '\s+',10)[0,3])" -replace "\-",""; "$(($_ -split '\s+',10)[8])" -replace "^-","";}

我得到以下输出格式:

10.0.1.21 00237de94558
BUILD-01.example.com
10.0.1.22 00237de95438
BUILD-02.example.com
10.0.1.23 00237de8cf80
BUILD-03.example.com

有人能指出我的逻辑有缺陷吗?我似乎无法获得急需的正确输出。提前致谢。

【问题讨论】:

    标签: parsing powershell


    【解决方案1】:

    这是解析输出并返回富对象而不是文本的另一种方法:

    netsh dhcp server \\dhcpserver scope 10.0.1.0 show clientsvq  | foreach  {
    
        $values = ($_ -split '\s+-')[0,2,5]
    
        if($values[0] -as [ipaddress])
        {
             New-Object PSObject -Property @{
               IPAddress = [ipaddress]$values[0].Trim()
               MAC = $values[1].Trim() -replace '-'
               Name = $values[2].Trim()
            }
        }    
    }
    

    【讨论】:

      【解决方案2】:

      这是一个似乎可行的版本。我通过将-split 运算符返回的数组存储在一个变量中来简化您的尝试,以避免在将其发送到管道时发生展开。这样我们就可以直接访问每一列。请注意,为简化起见,我只是将您的 dhcp 命令替换为 $dhcpcommand

      $dhcpcommand | select-string example.com | %{$cols = @($_ -split '\s+'); "$($cols[0]) $($cols[3] -replace '-','') $($cols[8])"}
      

      【讨论】:

      • 先生,您是我的英雄。
      猜你喜欢
      • 2020-07-12
      • 2022-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多