В многодоменной среде мне нужно получить "доменное имя", к которому присоединяются серверы. У меня есть список сотен серверов Windows только с именем хоста (не FQDN).

Мне было интересно, если есть сценарий способ получить доменное имя серверов?

Может быть, создать CSV-файл со всем именем хоста и запустить пакетный файл против него?

В идеале я ищу командный файл, который будет считывать имена серверов из файла CVS и выводить другой файл CVS с именем сервера и именем домена, кроме него.

например; (вход CSV)

Server Names
ABCVM01
ABCVM02

Выход CSV

Server Name   Domain Name
CVM01         MyDomain.com
ABCVM02       OtherDomain.com

Любая помощь будет высоко оценен.

Это то, что я до сих пор, но безуспешно в получении результата:

@echo off

Title Get Domain Names ....

REM **************************************************************************************
REM *  This Batch file will get the domain name for a set of servers listed in Servers.txt
REM **************************************************************************************


date /t > date-temp.txt
time /t > time-temp.txt
for /f "tokens=1-4 delims=/ " %%A in (date-temp.txt) do (
for /f "tokens=1-4 delims=: " %%M in (time-temp.txt) do (
for /f " " %%S in (servers.txt) do (
echo Getting Domain name of %%S ...
wmic /node:%%S computersystem get domain >> Discovery-DomainName_%%D%%C%%B%%A%%M%%N%%O.txt
Rem echo Stats for %%S : >> Discovery-DomainName_%%D%%C%%B%%A%%M%%N%%O.txt
echo . >> Discovery-DomainName_%%D%%C%%B%%A%%M%%N%%O.txt
)))

del date-temp.txt
del time-temp.txt

1 ответ1

0

У меня есть список сотен серверов Windows только с именем хоста (не FQDN).

Я ищу командный файл, который будет читать имена серверов из файла CVS и выводить другой файл CVS с именем сервера и именем домена, кроме него.

У меня закончилось время, прежде чем я смог получить выходные данные каждого значения в той же строке, но он работает и получает соответствующие значения в выходном текстовом файле и форматируется так, чтобы каждое из них можно было различить. (Я буду рад рассмотреть это немного позже, если это не удовлетворит потребность.)

Я включил логику в сценарий, чтобы при наличии машин, которые WMIC /NODE: не мог достичь, он даже не пытался их выводить.

Я очистил некоторую логику установки переменных даты и времени, так как они не должны быть во вложенных циклах FOR, так что лучше установить эти переменные.

Я основывал эту логику на том, что вы пытались сделать, чтобы вы не могли приступить к работе, которую вы предоставили, демонстрируя свои усилия, но у вас были проблемы с этим.

Вывод будет в следующем формате:

<ServerName1>
<DomainName>

<ServerName2>
<DomainName>

<ServerName3>
<DomainName>

Пример сценария

(Обязательно установите SET ServerList= чтобы указать полный путь и имя файла в списке server.txt. Также обязательно установите SET OutputText= чтобы указать полный путь и имя файла, где будет имя выходного файла txt - %dt%%HRTime% теперь является частью формата даты и времени, которую вы показали, как необходимо в вашем примере, так держите это также очевидно.)

@ECHO ON
:: **************************************************************************************
:: *  This Batch file will get the domain name for a set of servers listed in Servers.txt
:: **************************************************************************************

:TimeVariables
FOR /F "TOKENS=1-3 DELIMS=: " %%A IN ('Time /T') DO SET "HRTime=%%A%%B%%C"
FOR /F "TOKENS=1-4 DELIMS=/ " %%A IN ("%date%") DO SET "dt=%%D%%C%%B%%A"

:FileVariables
SET ServerList=C:\Path\Servers.txt
SET OutputText=C:\Path\Discovery-DomainName_%dt%%HRTime%.txt

:ServerWMICList
FOR /F "TOKENS=*" %%S IN (%ServerList%) DO (
    ECHO Getting Domain Name of %%S ...
    WMIC /NODE:%%~S COMPUTERSYSTEM GET DOMAIN && ECHO %%~S >> "%OutputText%" && WMIC /NODE:%%~S COMPUTERSYSTEM GET DOMAIN | FIND /I /V "Domain" >> "%OutputText%"
)
GOTO EOF

Дополнительные ресурсы

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .