Arquivo em lote para obter o nome de domínio de centenas de servidores em um ambiente de vários domínios

0

Em um ambiente de vários domínios, preciso obter o "Nome de domínio" ao qual os servidores estão associados. Eu tenho uma lista de centenas de servidores Windows com apenas o nome do host (não FQDN).

Eu queria saber se existe uma maneira de obter o nome de domínio dos servidores?

Talvez, crie um arquivo csv com todo o nome do host e execute um arquivo em lote?

O ideal é que eu esteja procurando um arquivo em lote que leia os nomes dos servidores de um arquivo CVS e que emita outro arquivo CVS com o nome do servidor e o nome de domínio.

por exemplo; (entrada CSV)

Server Names
ABCVM01
ABCVM02

CSV de saída

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

Qualquer ajuda seria muito apreciada.

Isso é o que eu tenho até agora, mas não tenho sucesso em obter resultado:

@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
    
por Stelioss 05.01.2016 / 23:41

1 resposta

0

I have a list of hundreds of Windows servers with the hostname only (not FQDN).

I am looking for a batch file that would read the server names from a CVS file and output another CVS file with the Server Name and Domain Name besides it.

Eu fiquei sem tempo antes que eu pudesse obter a saída de cada valor na mesma linha, mas ele funciona e obtém os valores aplicáveis no arquivo de texto de saída e formatado onde cada um é distinguível. (Eu ficarei feliz em ver isso um pouco mais tarde, se isso não satisfizer a necessidade.)

Eu coloquei a lógica no script, por isso, se houver máquinas que o WMIC /NODE: não consiga alcançar, ele nem tentará produzir as mesmas.

Eu limpei parte da lógica de configuração de variável de data e hora, já que eles não precisavam estar em loops FOR aninhados, então é melhor configurar essas variáveis.

Eu baseei essa lógica fora do que você tentou que você não poderia começar a trabalhar que você forneceu mostrando o seu esforço, mas teve problemas com isso.

A saída será neste formato:

<ServerName1>
<DomainName>

<ServerName2>
<DomainName>

<ServerName3>
<DomainName>

EXEMPLO DE SCRIPT DE LOTE

(Certifique-se de definir SET ServerList= para apontar para o caminho completo e o nome do arquivo da lista server.txt. Além disso, certifique-se de definir SET OutputText= para apontar para o caminho completo e o nome do arquivo o nome do arquivo txt de saída será — o %dt%%HRTime% é agora a parte do formato de data e hora que você mostrou conforme necessário em seu exemplo, então mantenha isso também.)

@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

Recursos adicionais

por 06.01.2016 / 07:38