2009-02-06 4 views
1

Я написал несколько VBScripts для автоматизации задач, выполняемых на компьютерах по сети. Они отлично подходят для большинства задач, однако в нашей сети у нас есть проблемы с правильным IP-адресом в DNS. Это происходит, главным образом, с ноутбуками, где у нас разные диапазоны IP для компьютеров в беспроводной и проводной сети.Windows - VBScript - определение IP-адреса компьютера в сети

Например, машина может загружаться проводной утром и получить IP-адрес: 10.10.10.1

Когда он переключается на беспроводной будет получить адрес в другой подсети: 10.11.10.1

Когда вы пытаетесь подключиться к этой машине, он все равно возвращает старый IP-адрес (10.10.10.1), даже если компьютер теперь имеет новый.

Я обнаружил, что все еще могу подключиться к ресурсу C $ этого компьютера через \ имя компьютера \ c $, даже если машина не выполняет ping. Очевидно, что происходит какое-то другое разрешение адреса, мой вопрос заключается в том, как я могу использовать это, чтобы мои VBScripts могли подключаться к WMI?

Спасибо!

ответ

1

Если DNS не имеет правильного адреса, возможно, он, вероятно, будет разрешен NetBios. То, что вам нужно будет сделать, - это разрешить имя компьютера с WINS-сервером или через Broadcasts в сети. В зависимости от вашей сетевой среды вы используете один или оба из этих параметров.

У Microsoft есть инструмент под названием NBLookup, который должен иметь возможность искать имя от WINS по крайней мере.

Вы можете вызвать NBLookup и проанализировать результаты. Я не помню другого метода для разрешения NetBios изначально в VBScript, но в последнее время я не выглядел ужасно.

+0

Это именно то, что я искал. Я смог использовать эту утилиту и проанализировать результаты так же, как вы предложили, чтобы получить IP-адрес машины. Благодаря! –

0

Из моего собственного опыта я обнаружил, что Microsoft TechNet ScriptCenter имеет практически все, что вы когда-либо хотели бы связать с VBScript. Обычно я начинаю, когда хочу вникать в новую область VBScript, которую я ранее не изучал.

WMI FAQ на веб-сайте Microsoft TechNet содержит ссылки на ScripCenter, а также ссылки на многие другие сайты usefule для изучения сценариев WMI. Я бы рекомендовал найти сценарий, который уже делает то, что вы хотите, потому что кто-то должен был уже написать то, что вам нужно.

В статье Automating TCP/IP Networking on Clients может быть что-то, что вам нужно для решения этой проблемы.

+0

Это не совсем то, что я ищу. Цель состоит в том, чтобы определить IP-адрес машины, отдаленно игнорируя значение в DNS для рабочей станции. Я искал решение этого в центре скриптов в прошлом без успеха. –

1

Ваша проблема в названии. Windows использует 2 типа разрешения имен: DNS и NetBIOS.

DNS будет разрешать имя, например .comcast.net или www.google.com. NetBIOS разрешает имена, которые содержат 15 символов или меньше, например, вероятно, имя вашего компьютера.

Когда ваш компьютер ищет имя, он не знает, как превратиться в IP-адрес, он переходит на DNS-сервер и/или использует разрешение имен NetBIOS. Как только он будет искать имя, он сохраняет его в кеше в течение некоторого периода времени (обычно около часа), прежде чем снова искать его.

Вы можете посмотреть на список имен ваш компьютер кэшируются для каждого типа разрешения имен с помощью командной строки так:

DNS
    IPCONFIG -displaydns
NetBIOS
    Nbtstat -c

Каждая из этих команд также позволяет очистить и этот кеш, что заставит вашу систему заново открыть IP-адрес, на который указывает это имя. Вот эти команды:

DNS
    IPCONFIG -flushdns
NetBIOS
    пЬЬзЬаЬ -R

между этими командами, вы должны быть в состоянии определить, какой тип разрешения имен является виновником и разрешите его, сбросив этот кеш.

 Смежные вопросы

  • Нет связанных вопросов^_^