Я пытаюсь запустить DNSCMD.exe /enumrecords из файла .vbs на нашем DNS-сервере Windows Server 2003 и вывести результаты в файл .csv для каждого имени узла в зоне DNS.
Я ввел узлы, для которых я хочу запустить команду в зоне, в массив и ввел список имен файлов в другой массив.
Идея состоит в том, чтобы запустить цикл for, чтобы просмотреть каждое имя узла и имя файла 0-42, запустить команду для каждого имени узла и последовательно вывести каждое имя файла.
Option Explicit
Dim ncpArr, NODE, fnameArr, FILE, DNSCMD, objWSHShell, QComm
Set objWSHShell = WScript.CreateObject("WScript.Shell")
ncpArr = Array(42 item array of DNS Nodes)
fnameArr = Array(42 item array of filenames)
QComm = "DnsCmd DNSservername /enumrecords contoso.com " & ncpArr(NODE) & " /Additional> c:\DNSData\" & fnameArr(NODE) & ".csv"
For NODE = 0 to 42
objWSHShell.Run QComm,1,True
'objWshShell.Exec QComm
'wscript.echo "| " & ncpArr(NODE) & " | | " & fnameArr(NODE) & " |"
'wscript.echo DNSCMD
Next
Намерение состояло в том, чтобы сэкономить немного времени, но, во всяком случае, я утроил время, которое потребовалось бы для запуска этих 42 команд при написании этого скрипта.
То, что я понял до сих пор, это:
Когда я запускаю эту команду на DNS-сервере, она выводит CSV точно так, как я хочу.
DnsCmd dnsservername /enumrecords zone.name node.st.name /Additional /continue> c:\DNSData\state_city_net.csv
Когда я запускаю ту же команду, как это:
Set objWSHShell = WScript.CreateObject("WScript.Shell")
objWSHShell.run "dnscmd /enumrecords zone.name node.st.name /additional> c:\DNSData\state_city_net.csv"
Всплывающее окно командной строки кратко показывает инструкции для DNSCMD, как если бы я запустил DNSCMD /?. Я смог только взглянуть на это, запустив описанный выше цикл и нажав «Пауза/Перерыв» в нужное время. Не уверен, можно ли заставить окно командной строки оставаться открытым, чтобы показывать какие-либо ошибки
Я заметил одну вещь: обычно, когда вы запускаете его с неправильным синтаксисом, в верхней части будет некоторая информация об ошибке. В этом случае это буквально выглядит как DNSCMD /? инструкции без ошибок вверху.
Мне серьезно интересно, невозможно ли просто запустить DNSCMD/enumrecords с использованием файла .vbs. как вы можете видеть из закомментированных частей, я попробовал несколько вещей, чтобы показать, что синтаксис правильный. Когда я повторяю вывод цикла, я могу ввести точный синтаксис в командную строку на DNS-сервере, и это работает!
Если бы КТО-НИБУДЬ мог просто взглянуть на то, что у меня есть выше, и сказать мне, почему, когда я запускаю свой сценарий, он делает это, или если бы вы могли хотя бы просто подтвердить, что мой сценарий надежен, и это что-то с DNSCMD, это действительно помогло бы мне лучше спать.
Спасибо, Дрю.