在Powershell中,将两个表合并为一个表的最佳方法是什么?我是Powershell的新手,我想知道是否有人知道有任何更好的方法来完成以下示例问题。我有一个从IP地址到主机名的映射数组。这表示活动DHCP租约列表:PS H:\> $leasesIP Name-- ----192.168.1.1 Apple192.168.1.2 Pear192.168.1.3 Banana192.168.1.99 FishyPC我有另一个从MAC地址到IP地址的映射数组。这代表了IP预订列表:PS H:\> $reservationsIP MAC-- ---192.168.1.1 001D606839C2192.168.1.2 00E018782BE1192.168.1.3 0022192AF09C192.168.1.4 0013D4352A0D为方便起见,我能够使用以下代码生成从MAC地址到IP地址和主机名的第三个映射数组。我们的想法是$reservations应该获得第三个字段“Name”,只要有匹配的“IP”字段就填充该字段:$reservations = $reservations | foreach { $res = $_ $match = $leases | where {$_.IP -eq $res.IP} | select -unique if ($match -ne $NULL) { "" | select @{n="IP";e={$res.IP}}, @{n="MAC";e={$res.MAC}}, @{n="Name";e={$match.Name}} }}所需的输出是这样的:PS H:\> $idealIP MAC Name-- --- ----192.168.1.1 001D606839C2 Apple192.168.1.2 00E018782BE1 Pear192.168.1.3 0022192AF09C Banana192.168.1.4 0013D4352A0D有没有更好的方法呢?
3 回答
![?](http://img1.sycdn.imooc.com/54586431000103bb02200220-100-100.jpg)
牛魔王的故事
TA贡献1830条经验 获得超3个赞
功能很棒,但是如果在Powershell模块中使用它,请小心。由于作用域的工作方式,$Left
和$Right
变量在-Merge
脚本块中不可用(模块的变量是模块专用的,因此脚本块无法看到它们)。如果点源或将函数直接包含在调用它的脚本中,则这不是问题。
没有找到匹配的内容?试试慕课网站内搜索吧
添加回答
举报
0/150
提交
取消