2016-07-04 2 views
2

서버에있는 (NIC의) 포트 양에 대해 다른 사용자 지정 개체를 가져 오려고합니다.둘 이상의 사용자 지정 개체 얻기

아래 스크립트 은 처리 한 마지막 포트만 캡처합니다 (). 얼마나 많은 포트가 서버에 있는지에 대한 사용자 지정 개체를 만들 수 있습니까?

$objects = Get-WmiObject -Class Win32_NetworkAdapter -filter "Name LIKE '%Intel%' OR Name LIKE '%HP%' OR Name LIKE '%Broadcom%'" 

Foreach($object 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 
} 

답변

3

당신은 당신의 foreach 루프 내에서 현재 object을 덮어하고 정의되지 않은 변수 $os을 사용 : 일부는 이상적으로 다음 내가 나중에 사용할 수있는 이름으로 각 개체를 저장 2 등 4 등이있을 수 있습니다.

당신은 아마 이런 걸하고 싶지 : 당신은 두 가지 속성을 선택하기 때문에, 그러나

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 
2

코드는 현재

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

(올바른 위치에 약간의 공백이 있다고 가정하면 실행됩니다).

이것은 본질적으로 전혀 이해가되지 않습니다. 어쩌면 당신은 다음과 비슷한 것을 의미할까요? 인해 루프에서 $object에 재 할당 및 $os의 사용에 모든에서 조회 된 객체에서 아무것도를 사용하지 않는 것을

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

참고.