2013-07-19 4 views
0

새 서버를 커미셔닝 할 때 많은 기본 작업을 실행할 스크립트를 만들고 있습니다. 이제 대부분의 서버에는 요즘 여러 개의 NIC가 있으며 사용자에게 (스크립트를 사용하여) 어떤 NIC에 IP를 할당할지 질문해야합니다. 순간 NIC의 고정 IP 설정 - Powershell

나는이 : $NICs에 NIC를 넣어 것입니다
$NICs = Get-WMIObject Win32_NetworkAdapterConfiguration -ComputerName $env:COMPUTERNAME | where{$_.IPEnabled -eq $true -and $_.DHCPEnabled -eq $true} 

저는 믿습니다. 그러나 여기에서 나는 그들을 사용자에게 인쇄하고, 어떻게 든 인덱스와 같이 각 NIC에 값을 할당하여 사용자가 "1"또는 "2"를 입력 할 수 있도록 스크립트에 어떤 NIC를 적용할지 알려줍니다. IP 구성은 다음과 같이 수행됩니다.

If($ipQuestion -eq "Y") { 
    $ipAddr = Read-Host "Enter IP Address: " 
    $subnet = Read-Host "Enter Subnet: " 
    $dns = Read-Host "Enter DNS: " 
    Write-Host "Multiple DNS servers?" -ForegroundColor Green 
    $multipleDNSServersQuestion = Read-Host 
    If($multipleDNSServersQuestion -eq 'Y'){ 
     $dns2 = Read-Host "Enter Secondary DNS: " 
    } 
    $dGateway = Read-Host "Enter Default Gateway: " 
} 

$NIC.EnableStatic($ipAddr, $subnet) 
$NIC.SetGateways($dGateway) 
$NIC.SetDNSServerSearchOrder($dns, $dns2) 
$NIC.SetDynamicDNSRegistration("TRUE") 

아이디어가 있습니까?

답변

0
$NICs = @(Get-WMIObject Win32_NetworkAdapterConfiguration ...) 

$NICs에게 (제로) 인덱스로 액세스 할 수있는 배열을 만들 것입니다 : 당신은 NICS는 항상 배열을 $를 확인하는 경우, 사용자가 지정하는 배열 인덱스를 사용할 수 있습니다

$NICs[0] # <-- first interface 
$NICs[1] # <-- second interface 
... 
1

각 NIC.

$NICs = @(Get-WMIObject Win32_NetworkAdapterConfiguration -ComputerName $env:COMPUTERNAME | where{$_.IPEnabled -eq $true -and $_.DHCPEnabled -eq $true}) 

그런 다음 지금처럼 정보를 인쇄 :

PS> $NICS = @(Get-WMIObject Win32_NetworkAdapterConfiguration) 
PS> $NICS | Foreach {$i=-1}{$i++;$_} | ft @{n='index';e={$i}},Description,ServiceName 

index Description        ServiceName 
----- -----------        ----------- 
    0 WAN Miniport (L2TP)      Rasl2tp 
    1 WAN Miniport (SSTP)      RasSstp 
    2 WAN Miniport (IKEv2)     RasAgileVpn 
    3 WAN Miniport (PPTP)      PptpMiniport 
    4 WAN Miniport (PPPOE)     RasPppoe 
    5 WAN Miniport (IP)      NdisWan 
    6 WAN Miniport (IPv6)      NdisWan 
    7 WAN Miniport (Network Monitor)   NdisWan 
    8 Microsoft Kernel Debug Network Adapter kdnic 
    9 RAS Async Adapter      AsyncMac 
    10 Broadcom NetXtreme Gigabit Ethernet  b57nd60a 
    11 Microsoft ISATAP Adapter    tunnel 
    12 Microsoft Teredo Tunneling Adapter  tunnel 
    13 Microsoft 6to4 Adapter     tunnel 
    14 Microsoft ISATAP Adapter    tunnel 

는 다음과 같이 각 NIC에 액세스 :

$NICS[$selectedIndex] 
+0

FormatTable 출력이 작동하지 않는 것 같습니다. – PnP

+0

그래, 그 비트를 끝내지 않은 것 같습니다. :-) 업데이트 된 버전을 사용해보십시오. –

+0

그 중 하나가 작동하는지 잘 모르겠습니다. – PnP

0

내가하고자하는 방법을 항상이 할 배열입니다 보장하기 위해 해. 당신은 인터넷 connexions에서 네트워크 connexions 패널을 한 번 봐. 당신은 자신의 장치에 대해 사용자가 알고있는 문자열을 볼 수

enter image description here

그래서 사용자와의 대화에서 내가 win32_NetworkAdapterIndex으로 Win32_NetworkAdapterConfiguration을 joinning 함께 불러 오는이 이름을 줄 것입니다.

$NICs = Get-WMIObject Win32_NetworkAdapterConfiguration -ComputerName $env:COMPUTERNAME | where{$_.IPEnabled -eq $true -and $_.DHCPEnabled -eq $true} 
$NICs | % {$i = (Get-WmiObject win32_NetworkAdapter -Filter "index=$($_.index)").NetConnectionID; $_} | ft @ 
{n='index';e={$i}},Description,ServiceName 

index          Description        ServiceName 
-----          -----------        ----------- 
NET1          Intel(R) 82567LM Gigabit Network Conne... e1yexpress