<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBS: Win32_NetworkAdapterConfiguration]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=7157</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=7157&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBS: Win32_NetworkAdapterConfiguration».]]></description>
		<lastBuildDate>Fri, 27 Apr 2012 14:25:12 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: VBS: Win32_NetworkAdapterConfiguration]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=59792#p59792</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Пробую использовать Win32_NetworkAdapterConfiguration, но возникает проблема, пр установленных нескольких сетевых адапторах(даже если их уже давно нет в системе - физически &quot;вынут&quot; сетевой адаптор) - выводятся несколько одинаковых IP-адресов.</p></blockquote></div><p><strong>Bsplesk</strong>, проблема в том, что Вы не удаляете фантомные устройства. Выполните следующий код:<br /></p><div class="codebox"><pre><code>Option Explicit

Const SW_HIDE = 0


Dim elem
Dim strNewEnvironment

Dim objSWbemObjectEx
Dim lngProcessID

Dim objMenuItem

Dim strTempFileName


If Not WScript.Arguments.Named.Exists(&quot;ShowDevMgmt&quot;) Then
  With GetObject(&quot;winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2&quot;)
    strNewEnvironment = _
      &quot;DEVMGR_SHOW_NONPRESENT_DEVICES=1&quot; &amp; vbCrLf &amp; _
      &quot;DEVMGR_SHOW_DETAILS=1&quot;
    
    For Each elem In WScript.CreateObject(&quot;WScript.Shell&quot;).Environment(&quot;Process&quot;)
      If Left(elem, 1) &lt;&gt; &quot;=&quot; Then
        strNewEnvironment = strNewEnvironment &amp; vbCrLf &amp; elem
      End If
    Next
    
    
    Set objSWbemObjectEx = .Get(&quot;Win32_ProcessStartup&quot;).SpawnInstance_
    
    objSWbemObjectEx.ShowWindow           = SW_HIDE
    objSWbemObjectEx.EnvironmentVariables = Split(strNewEnvironment, vbCrLf)
    
    If .Get(&quot;Win32_Process&quot;).Create( _
      &quot;wscript.exe &quot;&quot;&quot; &amp; WScript.ScriptFullName &amp; &quot;&quot;&quot; /ShowDevMgmt&quot;, Null, objSWbemObjectEx, lngProcessID _
      ) &lt;&gt; 0 Then
      
      WScript.Echo &quot;Process [wscript.exe &quot;&quot;&quot; &amp; WScript.ScriptFullName &amp; &quot;&quot;&quot;] could not be created.&quot;
    End If
    
    Set objSWbemObjectEx = Nothing
  End With
Else
  With WScript.CreateObject(&quot;MMC20.Application&quot;)
    .Load &quot;devmgmt.msc&quot;
    
    With .Document
      With .ActiveView
        .Frame.Maximize
        
        For Each objMenuItem In .ScopeNodeContextMenu
          If objMenuItem.Path = &quot;Вид-&gt;Показать скрытые устройства&quot; Then
            If objMenuItem.Enabled = 1 Then
              objMenuItem.Execute
              
              Exit For
            End If
          End If
        Next
      End With
      
      If .IsSaved = 0 Then
        strTempFileName = GetTemporaryFileName()
        .SaveAs strTempFileName
        
        WScript.CreateObject(&quot;Scripting.FileSystemObject&quot;).DeleteFile strTempFileName, True
      End If
    End With
    
    .UserControl = 1
  End With
End If

WScript.Quit 0
&#039;=============================================================================

&#039;=============================================================================
Function GetTemporaryFileName()
  Const TEMP_FOLDER = 2
  
  Dim strTempFile
  
  
  With WScript.CreateObject(&quot;Scripting.FileSystemObject&quot;)
    Do
      strTempFile = .BuildPath(.GetSpecialFolder(TEMP_FOLDER), .GetTempName)
    Loop While .FileExists(strTempFile)
  End With
  
  GetTemporaryFileName = strTempFile
End Function
&#039;=============================================================================</code></pre></div><p>и в появившемся окне Диспетчера Устройств удалите фантомные сетевые устройства.</p><p>Перевод на русский «будет оличатся от того, что настроен в гараф. ин. системы.» мне выполнить не удалось.</p><p>«если &quot;NetConnectionStatus&quot; = это &quot;Null&quot;, то считаем, что сетевой адаптер, не физический» — неверное предположение.</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Fri, 27 Apr 2012 14:25:12 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=59792#p59792</guid>
		</item>
		<item>
			<title><![CDATA[VBS: Win32_NetworkAdapterConfiguration]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=59774#p59774</link>
			<description><![CDATA[<p>Помогите разобратся с проблемкой:</p><p>Необходимо определить IP адрес(а) сетевого адаптора(ров) установленных в системе.<br />Пробую использовать Win32_NetworkAdapterConfiguration, но возникает проблема, пр установленных нескольких сетевых адапторах(даже если их уже давно нет в системе - физически &quot;вынут&quot; сетевой адаптор) - выводятся несколько одинаковых IP-адресов.</p><p>Пример один: в компьютере &quot;сгорела сетевая плата&quot; её адрес 192.168.0.1, её заменили другой(адрес установили, тотже). в результате код ниже выдаст, уже два раза по 192.168.0.1.</p><p>Пример два: в компьютере установлена 1 сетевая плата, и виртуальный &quot;адаптор замыкания на себя&quot; с разными IP = адресами, в результате код ниже выдаст, что у физического и виртуального адаптора, по два IP - адреса, причем у виртуального первый IP - адрес выданный кодом будет оличатся от того, что настроен в гараф. ин. системы. </p><div class="codebox"><pre><code>Function getip ( )
&#039;-----------------------------------------------------------------------
&#039;    Определяю IP-адрес
&#039;    Доработать  - выкидывает несколько ip-адресов, если физ. адаптор уже отключен
Dim strComputer, objWMIService, IPConfigSet, IPConfig, i, ip_comp 
strComputer = &quot;.&quot;
Set objWMIService = GetObject(&quot;winmgmts:&quot; _
    &amp; &quot;{impersonationLevel=impersonate}!\\&quot; &amp; strComputer &amp; &quot;\root\cimv2&quot;)
Set IPConfigSet = objWMIService.ExecQuery _
    (&quot;Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE&quot;)
&#039;     
For Each IPConfig in IPConfigSet
    If Not IsNull(IPConfig.IPAddress) Then 
        For i=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress)
            ip_comp=ip_comp &amp; IPConfig.IPAddress(i)
        Next
    End If
Next    
getip= ip_comp
End Function</code></pre></div><p>в Win32_NetworkAdapterConfiguration имеется интересный параметр index, который указывает № набора конфигурации. Остается вопрос каким образом <strong>узнать какую конфигурацию использует windows?</strong> </p><div class="codebox"><pre><code>strComputer = &quot;.&quot;
Set WshShell = WScript.CreateObject(&quot;WScript.Shell&quot;)
&#039;
Set objWMIService = GetObject(&quot;winmgmts:&quot; _
    &amp; &quot;{impersonationLevel=impersonate}!\\&quot; &amp; strComputer &amp; &quot;\root\cimv2&quot;)
Set colIPc=  objWMIService.ExecQuery _
    (&quot;Select * from Win32_NetworkAdapter&quot;)
Set IPConfigSet = objWMIService.ExecQuery _
    (&quot;Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE&quot;)


dim ip_comp, b


For each IPc in colIPc
    &#039;    Проверка на &quot;Null&quot; - если &quot;NetConnectionStatus&quot; = это &quot;Null&quot;, то
    &#039;        считаем, что сетевой адаптер, не физический 
    If IsNull (IPc.NetConnectionStatus) = True Then    
        WshShell.Popup &quot;NetConnectionStatus=Null. Считаем, что СЕТЕВОЙ адаптор:&quot; _
         &amp; Chr(13) &amp; Chr(10) &amp; IPc.Caption &amp; IPc.MACAddress &amp; IPc.SystemName &amp; _
         Chr(13) &amp; Chr(10) &amp; &quot;не является физическим устройством&quot;, 3, &quot;Infa&quot;, _
         vbExclamation
    Else
        &#039;    Необходимо проверить включен ли сетевой адаптор, нас интесуют
        &#039;    только включенные сетевые адапторы
        If IPc.NetConnectionStatus = 2 Then    &#039;    Адаптор подключен 
            WshShell.Popup &quot;NetConnectionStatus&lt;&gt;Null. Считаем, что СЕТЕВОЙ адаптор:&quot; _ 
            &amp; Chr(13) &amp; Chr(10) &amp; IPc.Caption &amp; IPc.MACAddress &amp; IPc.SystemName _
            &amp; Chr(13) &amp; Chr(10) &amp; &quot;является физическим устройством&quot;, 3, &quot;Infa&quot;, _
            vbInformation 
            &#039;
            MsgBox &quot;попытка определить ip-адреса сетевого адаптора&quot;
            MsgBox &quot;MAC adress_Win32_NetworkAdapter&quot;&amp; Chr(13) &amp; Chr(10) &amp; IPc.MACAddress
            &#039;    Получаю mac- адрес нужного мне сетевого адаптора и 
            &#039;    пробую задействовать Win32_NetworkAdapterConfiguration
            &#039;    только для адаптора с указанным MAC-адресом
            For Each IPConfig in IPConfigSet
                If Not IsNull(IPConfig.IPAddress) Then 
                    For i=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress)
                        kol_ip= kol_ip+1 
                        ip_comp=ip_comp &amp; IPConfig.IPAddress(i)
                        MsgBox &quot;Номер конфигурации адаптора: &quot; &amp; IPConfig.Index &amp; Chr(13) &amp; Chr(10) &amp; _
                        &quot;ip-адрес для этой конфигурации: &quot; &amp; IPConfig.IPAddress(i)  
                    Next
                End If
            Next
            &#039;    Проверка
            MsgBox &quot;Сетевой адаптор с описанием:&quot; _ 
            &amp; Chr(13) &amp; Chr(10) &amp; IPc.Caption &amp; Chr(13) &amp; Chr(10) &amp; _
             &quot;имеет&quot; &amp; kol_ip &amp; &quot;сетевых адреса:&quot; &amp;  ip_comp
            ip_comp=&quot;&quot;
            kol_ip=0
        &#039;Else
            &#039;MsgBox &quot;Сетевой адаптор не подключен&quot;
        End If
    End If
Next</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Bsplesk)]]></author>
			<pubDate>Fri, 27 Apr 2012 07:43:54 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=59774#p59774</guid>
		</item>
	</channel>
</rss>
