2012-11-28 44 views
3

我有一個腳本,我寫了它來幫助配置計算機後部署。該腳本可以完成諸如設置計算機名稱,啓用BitLocker等功能。我正在努力的一件事是設置IP地址。我使用的計算機(服務器是特定的)有4個NIC端口,它們分別命名爲本地連接和本地連接2-4。問題是部署這些服務器的技術人員並不總是插入同一個端口,此外,部署映像並不總是將以太網網絡本地連接分配給NIC端口1.命令行來確定哪個以太網接口正在使用

這是複製我有的腳本,如果只啓用一個NIC端口,它可以很好地工作。我需要做的是將具有IP地址(因爲DHCP已存在)的本地連接名稱的輸出傳輸到我可以放入netsh命令的變量中。在地方

:IPADDRESS 
@echo Would you like static or DHCP? 
@echo press 1 for static 
@echo press 2 for dhcp 
Choice /C:12 /N /M "?:" 
IF ERRORLEVEL 2 GOTO IPDHCP 
IF ERRORLEVEL 1 GOTO IPSTATIC 

:IPSTATIC 
set /P _IPADDR=Please enter IP address: 
set /p _Subnet=Please enter Subnet: 
set /p _DefaultGateway=Please Enter Default Gateway: 

netsh interface ip set address name="Local Area Connection 2" static %_IPADDR% %_Subnet% %_DefaultGateway% 
goto START 

:IPDHCP 
    netsh interface ip set address "Local Area Connection 2" dhcp 
goto START 

:disipaddr 
    netsh interface ip show config name="Local Area Connection 2" 

命名爲「本地連接2」

目前的代碼是從內部版本變化的部分。所以這是我需要隔離的部分。我相當肯定的是,for/p並將其用於ipconfig/all或netsh接口ip show config將是正確的方法。

非常感謝您提供的所有幫助。

回答

0

也許你可以使用wmic?沿着線的東西:

for /f "tokens=2 delims==" %F in ('wmic nic where "NetConnectionStatus=2 and AdapterTypeId=0" get NetConnectionID /format:list') do set %activeNet%=%F 

應該返回所有連接(NetConnectionStatus=2)ETH/802.3(AdapterTypeID=0)接口 - 即一個連接您的實例。 (由於某種原因,它也會報告的WiFi爲802.3我的XP的筆記本電腦,但是這不應該是服務器的問題)

你可以,如果它返回它的命令行直接嘗試它,因爲它是看應該。如果批量使用,請將%F替換爲%%F

請注意,可能需要檢查爲連接接口返回的值,因爲它在各種操作系統中有所不同。 Full description of the Win32_NetworkAdapter class(whic nic是一個別名)

如果你是100%肯定要檢查只能開始「本地連接」,你可以使用where "netconnectionID like 'Local Area Connection%'"代替(或其他條件結合起來)

1

者這將工作,並在Windows 7上測試。

@echo off 

for /f "tokens=2 delims==" %%F in ('wmic nic where "NetConnectionStatus=2 and AdapterTypeId=0" get NetConnectionID /format:list') do set interfaceName=%%F 

echo Your Interface is %interfaceName% 

pause 
相關問題