Equivalente ao comando Linux `hostname --fqdn` no Windows XP?

33

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 --fqdndisponível no Linux.

Grundlefleck
fonte

Respostas:

18

Você pode encontrá-lo nas propriedades do sistema (guia "Nome do computador").

Com a linha de comando, você pode executar IPCONFIG /ALLe dar uma olhada nos campos "Nome do host" e "Sufixo DNS primário".

Massimo
fonte
As duas maneiras diferentes dão resultados diferentes. O ipconfig fornece o que eu esperava, mas na guia 'Nome do computador', o domínio é diferente. Parece um nome de grupo de trabalho em vez de um sufixo de domínio. É algo específico do Windows em que eles são equivalentes?
Grundlefleck
Na guia "Nome do computador", verifique o valor "Nome completo do computador"; o valor "domínio" é o domínio do Windows (ou grupo de trabalho) do qual o computador é membro.
Massimo
Ah, certo. Bem, deve haver algo errado com a instalação nesta máquina, pois está apenas mostrando o nome do host (com um ponto no final). Provavelmente não teria que fazer a pergunta se ela estivesse sendo mostrada como esperado :-D. +1
Grundlefleck 12/10/2009
Você já tentou clicar em "Alterar" e depois em "Mais"?
Massimo
1
Lembre-se de que alguns sistemas estão localizados; portanto, procurar a linha adequada por nr pode ser melhor em alguns casos (é a linha 5 da aaik).
#RJR
28

Não existe essa opção para o hostnamecomando 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 setou systeminfoou ipconfig -allnome 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).

PEra
fonte
1
A segunda variável é "% USERDNSDOMAIN%".
Benoit
% USERDNSDOMAIN% não parece ser uma variável neste sistema. A menos que eu estou fazendo algo errado: H:.. \> Echo% COMPUTERNAME%% USERDNSDOMAIN% [correctname]% USERDNSDOMAIN%
Grundlefleck
Ach, esqueci que colar isso seria horrível nos comentários.
Grundlefleck 12/10/2009
2
Você pode usar o WMIC para recuperar nome de domínio:wmic computersystem get domain
Noam Manos
7

O comando é:

ping -a localhost
Bozojoe
fonte
1

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
user209990
fonte
1

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 %ise 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.

user295947
fonte
1

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%

Tony
fonte
1
Use quatro espaços à esquerda para formatar sua resposta como 'código'. O onipresente link de 'ajuda' é realmente útil.
Xalorous
0

Se você precisar portar scripts de shell do Unix para o Windows ou apenas gostar de trabalhar na CLI, dê uma olhada no GNUwin32 . Ele fornece as ferramentas comuns como cut, grep, etc para Windows.

PEra
fonte
0

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%
Dmitry
fonte
0

Outra versão:

echo.
echo Getting FQDN...
FOR /F "tokens=1-2" %%A in ('ping -a localhost -n 1') do (
    echo %%A | find /i "Pinging" >nul
    IF NOT ERRORLEVEL 1 SET "FQDN=%%B"
)
echo %FQDN%
sintaxe53
fonte