Existe uma maneira de encontrar o nome de domínio totalmente qualificado de uma caixa do Windows XP?
Por não estar familiarizado com o Windows, descreveria o que estou procurando como equivalente ao comando hostname --fqdn
disponível no Linux.
Existe uma maneira de encontrar o nome de domínio totalmente qualificado de uma caixa do Windows XP?
Por não estar familiarizado com o Windows, descreveria o que estou procurando como equivalente ao comando hostname --fqdn
disponível no Linux.
Respostas:
Você pode encontrá-lo nas propriedades do sistema (guia "Nome do computador").
Com a linha de comando, você pode executar IPCONFIG /ALL
e dar uma olhada nos campos "Nome do host" e "Sufixo DNS primário".
Não existe essa opção para o hostname
comando no Windows. No entanto, isso deve fazer o truque:
echo %COMPUTERNAME%.%USERDNSDOMAIN%
Ou você pode grep (no Windows find /I "string"
:) para Host e Domínio a partir de set
ou systeminfo
ou ipconfig -all
nome e colá-lo em outro local.
Editar: erro de digitação corrigido. Obrigado Benoit
Atualização:
a variável %USERDNSDOMAIN%
está disponível apenas quando conectado a um domínio ... O sufixo DNS que você obtém de um servidor DHCP não é colocado em uma variável de ambiente (tanto quanto eu pude descobrir).
wmic computersystem get domain
vbscript:
' Print FQDN in lower case letters
' Volker Fröhlich (2011)
option explicit
dim Message
dim output
dim WshShell, objEnv
dim mydomain
' Read value from registry
function readFromRegistry (strRegistryKey, strDefault )
Dim WSHShell, value
On Error Resume Next
Set WSHShell = CreateObject("WScript.Shell")
value = WSHShell.RegRead( strRegistryKey )
if err.number <> 0 then
readFromRegistry= strDefault
else
readFromRegistry=value
end if
set WSHShell = nothing
end function
mydomain = readfromRegistry("HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Domain", "asdf")
' Get the WshShell object
Set WshShell = CreateObject("WScript.Shell")
' Get collection by using the Environment property
Set objEnv = WshShell.Environment("Process")
if (mydomain="") then
Message = LCase(objEnv("COMPUTERNAME"))
else
Message = LCase(objEnv("COMPUTERNAME")) & "." & mydomain
end if
' Write to stdout
set output = wscript.stdout
output.writeline Message
ARQUIVO DE LOTE DOS DOS PARA CHAMAR ACIMA DO SCRIPT:
for /f %%a in ('cscript //nologo yourscriptname.vbs') do set FQDN=%%a
echo %FQDN%
pause
Tente isso no prompt de comando:
FOR /F "tokens=2" %i in ('systeminfo ^| find /i "Domain"') do echo %computername%.%i
lembre-se de usar double %
for %i
se estiver usando isso em um lote. por exemplo%%i
Um motivo pelo qual você pode fazer dessa maneira é: se seus usuários e computadores estiverem em domínios diferentes, %USERDNSDOMAIN%
isso não estará correto quando aplicado ao seu computador. Se você tiver apenas um domínio e nenhum domínio filho, poderá usar as outras soluções acima, se desejar.
Isso também funcionará e não terá o atraso de informações do sistema:
for / f "tokens = 2 delims =:"% i in ('ipconfig / all ^ | findstr Search') do domínio SET =% i & SET newdomain =% domain: =% & echo% COMPUTERNAME%.% newdomain%
Aqui está um script CMD para isso:
@ECHO OFF
FOR /f "tokens=2,* delims= " %%a in ('IPCONFIG ^/ALL ^| FINDSTR "Primary Dns"') do set tempsuffix=%%b
FOR /f "tokens=1,2 delims=:" %%a in ('echo %tempsuffix%') do set dnssuffix=%%b
SET FQDN=%COMPUTERNAME%.%DNSSUFFIX:~1%
ECHO Server FQDN: %FQDN%