簡體   English   中英

在NIC上設置靜態IP-Powershell

[英]Setting Static IP on NICs - Powershell

我正在創建一個腳本,它將在調試新服務器時執行許多基本任務。 現在,如今大多數服務器都具有多個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") 

有任何想法嗎?

如果確保$ 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]
$NICs = @(Get-WMIObject Win32_NetworkAdapterConfiguration ...)

將使$NICs成為一個數組,可以通過(從零開始的)索引進行訪問:

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

我會做的方式。 如果您要查看Internet連接中的“網絡連接”面板。 您可以看到用戶為他的設備知道的字符串:

在此處輸入圖片說明

因此,在與用戶的對話中,我將使用win32_NetworkAdapter Win32_NetworkAdapterConfigurationIndex結合使用來win32_NetworkAdapter該名稱。

$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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM