[英]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_NetworkAdapterConfiguration
與Index
結合使用來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.