3

展開後のコンピューターの構成に役立つように作成したスクリプトがあります。スクリプトは、コンピューター名の設定、BitLocker の有効化などを行います。私が苦労していることの 1 つは、IP アドレスの設定です。私が使用しているコンピューター (具体的にはサーバー) には 4 つの NIC ポートがあり、ローカル エリア接続とローカル エリア接続 2-4 という名前が付けられています。問題は、これらのサーバーを展開する技術者が常に同じポートに接続するとは限らず、さらに展開イメージが常にイーサネット ネット ローカル エリア接続を NIC ポート 1 に割り当てるとは限らないことです。

これは私が持っているスクリプトのコピーです。これは、1 つの NIC ポートのみが有効になっている場合に完全に機能します。私がする必要があるのは、(DHCP が既に存在するため) IP アドレスを持つローカル エリア接続名の出力を、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"

「Local Area Connection 2」という名前は、ビルドごとに変わる部分です。それが私が分離する必要がある部分です。for とnetsh interface ip show config/pのいずれかに対してそれを使用することが正しい方法であると確信しています。ipconfig /all

すべての助けを前もってありがとう。

4

3 に答える 3

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) インターフェイス、つまりインスタンスで接続されているインターフェイスを返す必要があります。(何らかの理由で、XP ラップトップでは WiFi が 802.3 として報告されますが、これはサーバーでは問題になりません)

コマンドラインから直接試して、想定どおりに返されるかどうかを確認できます。バッチで使用%Fする場合に置き換えます。%%F

接続されたインターフェイスに対して返される値は、OS によって異なるため、確認が必要な場合があることに注意してください。Win32_NetworkAdapter クラスの完全な説明(nicエイリアス)

「ローカル エリア接続」で始まるものだけをチェックしたい場合は、where "netconnectionID like 'Local Area Connection%'"代わりに (または他の条件と組み合わせて)使用できます。

于 2012-11-28T16:37:14.887 に答える