获取多个自定义对象

时间:2016-07-04 09:55:56

标签: powershell

我正在尝试为服务器上的端口(在NIC中)获取不同的自定义对象。

以下脚本仅捕获其处理的最后一个端口。如何为服务器上的多个端口创建自定义对象?有些可能有2和其他4等。理想情况下,然后使用名称保存每个对象,我可以稍后使用:

from itertools import count

for index, value1, value2 in zip(count(), data1, data2):
    print(index, value1, value2)

2 个答案:

答案 0 :(得分:3)

您正在覆盖object循环中的当前foreach并使用未定义的变量$os

你可能想做这样的事情:

Foreach($os in $objects)
{
    $object = New-Object –TypeNamePSObject
    $object | Add-Member –MemberTypeNoteProperty –Name NetEnabled –Value $os.NetEnabled
    $object | Add-Member –MemberTypeNoteProperty –Name PNPDeviceID –Value $os.PNPDeviceID
    Write-Output $object
}

但是,由于您只选择了两个属性,因此可以改为:

Get-WmiObject -Class Win32_NetworkAdapter -filter "Name LIKE '%Intel%' OR Name LIKE '%HP%' OR Name LIKE '%Broadcom%'" | 
   select NetEnabled, PNPDeviceID

答案 1 :(得分:2)

您的代码目前相当于

Get-WmiObject Win32_NetworkAdapter |
  where Name -match 'Intel|HP|Broadcom' |
  foreach {
    $os | select NetEnabled,PNPDeviceID
  }

(假设在正确的位置有一些空格使其完全运行)。

这根本没有任何意义。也许你的意思更类似于以下内容?

Get-WmiObject Win32_NetworkAdapter |
  where Name -match 'Intel|HP|Broadcom' |
  select NetEnabled,PNPDeviceID

请注意,由于您在循环中重新分配给$object并使用了$os,因此您不会使用查询对象中的任何内容。< / p>