49

Is there a way to find the fully qualified domain name of a Windows XP box?

Being unfamiliar with Windows I would describe what I'm looking for as the equivalent of the command hostname --fqdn available in Linux.

12 Answers12

39

There is no such option to the hostname command in windows. However, this should do the trick:

echo %COMPUTERNAME%.%USERDNSDOMAIN%

Or you can grep (under Windows: find /I "string") for Host- and Domain from set or systeminfo or ipconfig -all name and glue it together elsewhere.

Edit: fixed Typo. Thanks Benoit

Update: The variable %USERDNSDOMAIN% is only available when logged on to a domain... The DNS suffix you get from a DHCP server is not put into a environment variable (as far as I could figure out).

PEra
  • 2,935
30

You can find it in the system properties ("Computer name" tab).

With the command line, you can run IPCONFIG /ALL and have a look at the "Host name" and "Primary DNS suffix" fields.

Massimo
  • 72,827
18

The command is:

ping -a localhost
Falcon Momot
  • 25,584
Bozojoe
  • 635
2

Try this from the command prompt:

FOR /F "tokens=2" %i in ('systeminfo ^| find /i "Domain"') do echo %computername%.%i

remember to use double % for %i if using this in a batchfile. e.g. %%i

A reason you may want to do it this way is: if your users and computers are in different domains, the %USERDNSDOMAIN% will not be correct when applied to your computer. If you only have one domain and no child domains, then you can use the other solutions above if you like.

sebix
  • 4,432
1

With PowerShell:

(gpv HKLM:\SYSTEM\CurrentControlSet\services\Tcpip\Parameters HostName, Domain) -join '.'
Thor
  • 475
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

DOS BATCH FILE TO CALL ABOVE SCRIPT :

for /f %%a in ('cscript //nologo yourscriptname.vbs') do set FQDN=%%a
echo %FQDN%
pause
1

This will also work and does not have the delay of systeminfo:

for /f "tokens=2 delims=:" %i in ('ipconfig /all ^| findstr Search ') do SET domain=%i & SET newdomain=%domain: =% & echo %COMPUTERNAME%.%newdomain%

Tony
  • 11
1

Another version:

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

use 'hostname' and combine with for /F "tokens=3" %%I in ('reg query "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v Domain') do set _MyDomain=%%I

RLI
  • 1
0

An other way in PowerShell

Write-Host "$(Hostname).$((Get-NetIPConfiguration).NetProfile.Name)"

Or as a variable

$FQDN = $(Hostname).$((Get-NetIPConfiguration).NetProfile.Name)
$FQDN

Sample output

ServerName.ad.example.com
0

If you need to port Unix shell scripts to windows or just like to work on the CLI, have a look at GNUwin32. It provides the common tools like cut, grep, etc for Windows.

PEra
  • 2,935
0

Here is a CMD script for this:

@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
  • 1