2011-07-18 4 views
1

powershell을 사용하여 NIc 카드 정보에 대한 보고서를 작성하려고 시도하면 & 구성원을 추가하여 속성을 추가하지만 서버에있는 경우 하나 이상의 NIC, 회원 추가 오류 "당신은 속성을 owerwrite 하시겠습니까?"-force를 사용하여 문제를 해결할 수 있도록 도와주십시오. 또한 배열에 $ output = @()을 추가하여 모두를 추가합니다. 이 입력, 나는 NICS &을 하나씩 배열을 반복하면서 for 루프를 추가하려고 시도했다. 아무 출력도 보이지 않는다.NIC 정보를 가져 오기 위해 NIC 정보를 얻으려면 구성원을 추가하십시오 (powershell.)

< #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

이 시도 : (포스터의 요청에 따라)

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}} 
} 

UPDATE :

$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 

    } 
} 
+0

안녕하세요 @ 셰이 레비 당신 주셔서 감사합니다 그럼, 제발 내 스크립트에 같은 것을 추가하는 방법에 대해 알려주십시오. 감사. – PowerShell

+0

원한다. 스레드가 업데이트됩니다. –

+0

Thanks @ Shay levy 당신은 진정한 Powershell 전문가입니다! : D – PowerShell

관련 문제