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