0

新しいサーバーの試運転時に多くの基本的なタスクを実行するスクリプトを作成しています。現在、ほとんどのサーバーには複数の NIC があり、IP を割り当てたい NIC を (スクリプトを使用して) ユーザーに質問する必要があります。

現時点で私は持っています:

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

これでNICが入れられると$NICs思います。ただし、ここからユーザーにそれらを出力し、インデックスのように各 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") 

何か案は?

4

3 に答える 3

1

$NICS が常に配列であることを確認すると、配列インデックスを使用して各 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]
于 2013-07-19T21:36:35.237 に答える
0

私がそれをする方法。インターネット接続のネットワーク接続パネルをご覧ください。ユーザーが自分のデバイスについて知っている文字列を確認できます。

ここに画像の説明を入力

したがって、ユーザーとの対話で、この名前を付けて、 と結合してwin32_NetworkAdapter取得Win32_NetworkAdapterConfigurationIndexます。

$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
于 2013-07-20T11:07:01.063 に答える
0
$NICs = @(Get-WMIObject Win32_NetworkAdapterConfiguration ...)

$NICs(ゼロベースの)インデックスでアクセスできる配列を作成します。

$NICs[0]  # <-- first interface
$NICs[1]  # <-- second interface 
...
于 2013-07-19T21:34:45.550 に答える