Добавление члена для получения информации NIC выдает ошибку для серверов с более чем одним ником (powershell.) - PullRequest
1 голос
/ 18 июля 2011

Я пытаюсь сгенерировать отчет для информации NIc Card, используя powershell, и использовать add member, чтобы добавить свойства, но если на сервере имеется более 1 NIC, добавьте участников, возвращающих ошибку «Хотите ли вы написать свойство» -force, может кто-нибудь, пожалуйста, помогите мне разобраться с этой проблемой, также у меня есть массив $ output = @ (), в который я добавляю все эти входные данные, я попытался добавить цикл for, чтобы получить номер NICS и повторить их один за другим в виде массива, я не вижу выходных данных, может кто-нибудь мне помочь.

<# Информация о плате NIC Чек #>

$colItems1 = get-wmiobject -class "Win32_NetworkAdapter"  -namespace "root\CIMV2" -computername $compname
$colItems = get-wmiobject -class "Win32_NetworkAdapterconfiguration"  -namespace "root\CIMV2" -computername $compname
$lengthcol=($colItems1).length
for ($i=0;$i-lt$length;$i++){
foreach ($objitem in $colItems)
{
    # Match the current $objItem with the correct $ColItems1 element.
    $objItem1 = $colItems1| where-object{$_.Caption -eq $objItem.Caption}
    # A test is needed here as the loop will find a number of virtual network configurations with no  "Hostname" 
    # So if the "Hostname" does not exist, do NOT display it!
    if ($objItem.ipenabled -eq "true" -and  $objitem1.netconnectionid) {
    # Write to screen
    #write-host "Caption: " $objItem.Caption
    $nicname[$i]=$objitem1.netconnectionid
    $dhcpenabled[$i]=$objItem.DHCPEnabled
    $ipaddress[$i]=$objItem.IPAddress
    $ipsubnet[$i]=$objItem.IPSubnet
    $gateway[$i]=$objItem.DefaultIPGateway
    $dhcpserver[$i]=$objItem.DHCPServer
    $DNSDomain[$i]=$objItem.DNSDomain
    $DNSDomainSearchOrder[$i]=$objItem.DNSDomainSuffixSearchOrder
    $DNSServerSearchOrder[$i]=$objItem.DNSServerSearchOrder
    $output | Add-Member -MemberType Noteproperty -Name NICCardName[$i] -Value $nicname[$i]
    $output | Add-Member -MemberType Noteproperty -Name DHCPEnabled[$i] -Value $dhcpenabled[$i]
    $output | Add-Member -MemberType Noteproperty -Name IPAddress[$i] -Value $ipaddress[$i]
    $output | Add-Member -MemberType Noteproperty -Name SubnetMask[$i] -Value $ipsubnet[$i]
    $output | Add-Member -MemberType Noteproperty -Name Gateway[$i] -Value $gateway[$i]
    $output | Add-Member -MemberType Noteproperty -Name DHCPServer[$i] -Value $dhcpserver[$i]
    $output | Add-Member -MemberType Noteproperty -Name DNSDomain[$i] -Value $DNSDomain[$i]
    $output | Add-Member -MemberType Noteproperty -Name DNSDomainSuffixSearchOrder[$i] -Value $DNSDomainSearchOrder[$i]
    $output | Add-Member -MemberType Noteproperty -Name DNSServerSearchOrder[$i] -Value $DNSServerSearchOrder[$i]
}
}
}

$ выхода + $ = выход

1 Ответ

1 голос
/ 18 июля 2011

Попробуйте:

Get-WmiObject Win32_NetworkAdapter -ComputerName $computer| ForEach-Object {    
    $NetConnectionId = $_.NetConnectionId
    $nac = $_.GetRelated('Win32_NetworkAdapterconfiguration') | Select-Object IPEnabled,DHCPEnabled,IPAddress,IPSubnet,DefaultIPGateway,DHCPServer,DNSDomain,DNSDomainSuffixSearchOrder,DNSServerSearchOrder
    $nac | Select-Object *,@{Name='NetConnectionId';Expression={$NetConnectionId}}
}

ОБНОВЛЕНИЕ (по запросу автора):

$compname='.'
$colItems1 = get-wmiobject -class Win32_NetworkAdapter  -computername $compname
$colItems = get-wmiobject -class Win32_NetworkAdapterconfiguration -computername $compname

foreach ($objitem in $colItems)
{
     $objItem1 = $colItems1 | where-object{$_.Caption -eq $objItem.Caption}

     if ($objItem.ipenabled -eq $true -and $objitem1.netconnectionid)
     {
        $output = new-object -typename psobject
        $output | Add-Member -MemberType Noteproperty -Name NICCardName -Value $objitem1.netconnectionid
        $output | Add-Member -MemberType Noteproperty -Name DHCPEnabled -Value $objItem.DHCPEnabled
        $output | Add-Member -MemberType Noteproperty -Name IPAddress -Value $objItem.IPAddress
        $output | Add-Member -MemberType Noteproperty -Name SubnetMask -Value $objItem.IPSubnet
        $output | Add-Member -MemberType Noteproperty -Name Gateway -Value $objItem.DefaultIPGateway
        $output | Add-Member -MemberType Noteproperty -Name DHCPServer -Value $objItem.DHCPServer
        $output | Add-Member -MemberType Noteproperty -Name DNSDomain -Value $objItem.DNSDomain
        $output | Add-Member -MemberType Noteproperty -Name DNSDomainSuffixSearchOrder -Value $objItem.DNSDomainSuffixSearchOrder
        $output | Add-Member -MemberType Noteproperty -Name DNSServerSearchOrder -Value $objItem.DNSServerSearchOrder -PassThru  

     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...