Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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.

share|improve this question
up vote 11 down vote accepted

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.

share|improve this answer
The two different ways give different results. ipconfig gives what I was expecting, but in the 'Computer Name' tab, the domain is different. It looks like a Workgroup name rather than a domain suffix. Is this a Windows specific thing where they are somehow equivalent? – Grundlefleck Oct 12 '09 at 13:00
In the "Computer name" tab, you should look at the "Full computer name" value; the "domain" value is the Windows domain (or workgroup) the computer is member of. – Massimo Oct 12 '09 at 13:23
Ah right. Well there must be something wrong with the install on this machine, as it's only showing the hostname (with a dot at the end). Probably wouldn't have had to ask the question if it had been showing it as expected :-D. +1 – Grundlefleck Oct 12 '09 at 13:28
Have you tried clicking on "Change" and then "More"? – Massimo Oct 12 '09 at 13:42
No, unfortunately I am unable to as I don't have administrator credentials on these specific machines. The ipconfig command worked though, so it's all good :) – Grundlefleck Oct 12 '09 at 16:19

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


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).

share|improve this answer
The second variable is "%USERDNSDOMAIN%". – Benoit Oct 12 '09 at 13:36
%USERDNSDOMAIN% doesn't appear to be a variable on this system. Unless I'm doing something wrong: H:\>echo %COMPUTERNAME%.%USERDNSDOMAIN% [correctname].%USERDNSDOMAIN% – Grundlefleck Oct 12 '09 at 14:38
Ach, forgot that pasting that would be horrible in the comments. – Grundlefleck Oct 12 '09 at 14:39
You can use WMIC to retrieve domain name: wmic computersystem get domain – Noam Manos Apr 15 '15 at 7:14

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.

share|improve this answer

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
    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"))
Message = LCase(objEnv("COMPUTERNAME")) & "." & mydomain
end if

' Write to stdout
set output = wscript.stdout
output.writeline Message


for /f %%a in ('cscript //nologo yourscriptname.vbs') do set FQDN=%%a
echo %FQDN%
share|improve this answer

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.

share|improve this answer

The command is:

ping -a localhost
share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.