Эквивалент команды Linux `hostname --fqdn` в Windows XP?

33

Есть ли способ найти полное доменное имя Windows XP?

Будучи незнакомым с Windows, я бы описал то, что я ищу, как эквивалент команды, hostname --fqdnдоступной в Linux.

Grundlefleck
источник

Ответы:

18

Вы можете найти его в свойствах системы (вкладка «Имя компьютера»).

С помощью командной строки вы можете запустить IPCONFIG /ALLи просмотреть поля «Имя хоста» и «Основной DNS-суффикс».

Massimo
источник
Два разных способа дают разные результаты. ipconfig дает то, что я ожидал, но на вкладке «Имя компьютера» домен отличается. Это выглядит как имя рабочей группы, а не как суффикс домена. Это специфическая вещь для Windows, где они как-то эквивалентны?
Grundlefleck
На вкладке «Имя компьютера» вы должны посмотреть значение «Полное имя компьютера»; значение "домен" - это домен Windows (или рабочая группа), членом которой является компьютер.
Массимо
Ах да. Ну, должно быть, что-то не так с установкой на эту машину, так как она показывает только имя хоста (с точкой в ​​конце). Вероятно, не пришлось бы задавать вопрос, если бы он показывал это, как ожидалось :-D. +1
Grundlefleck
Вы пытались нажать «Изменить», а затем «Еще»?
Массимо
1
Просто помните, что некоторые системы локализованы, поэтому поиск правильной строки по nr может быть лучше в некоторых случаях (это строка 5 afaik).
RnR
28

Нет такой опции для hostnameкоманды в Windows. Тем не менее, это должно сделать свое дело:

echo %COMPUTERNAME%.%USERDNSDOMAIN%

Или вы можете grep (под Windows find /I "string":) для Host- и Domain от setили systeminfoили ipconfig -allname и склеить его вместе в другом месте.

Редактировать: исправлено опечатка. Спасибо Бенуа

Обновление: переменная %USERDNSDOMAIN%доступна только при входе в домен ... DNS-суффикс, который вы получаете с DHCP-сервера, не помещается в переменную среды (насколько я мог понять).

Пера
источник
1
Вторая переменная - «% USERDNSDOMAIN%».
Бенуа
% USERDNSDOMAIN% не является переменной в этой системе. Если я не делаю что-то не так: H: \> echo% COMPUTERNAME%.% USERDNSDOMAIN% [правильное имя].% USERDNSDOMAIN%
Grundlefleck
Ах, забыл, что вставка будет ужасна в комментариях.
Грундлефлек
2
Вы можете использовать WMIC для получения доменного имени:wmic computersystem get domain
Noam Manos
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, чтобы позвонить над сценарием:

for /f %%a in ('cscript //nologo yourscriptname.vbs') do set FQDN=%%a
echo %FQDN%
pause
user209990
источник
1

Попробуйте это из командной строки:

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

не забудьте использовать double %для %iиспользования этого в пакетном файле. например%%i

Причина, по которой вы можете захотеть сделать это следующим образом: если ваши пользователи и компьютеры находятся в разных доменах, это %USERDNSDOMAIN%не будет правильно применительно к вашему компьютеру. Если у вас есть только один домен и нет дочерних доменов, вы можете использовать другие решения, описанные выше, если хотите.

user295947
источник
1

Это также будет работать и не будет задерживать systeminfo:

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

Тони
источник
1
Используйте четыре начальных пробела, чтобы отформатировать ваш ответ как «код». Вездесущая ссылка «помощь» на самом деле полезна.
Ксалори
0

Если вам нужно перенести сценарии оболочки Unix в Windows или просто работать с CLI, взгляните на GNUwin32 . Он предоставляет общие инструменты, такие как вырезать, grep и т. Д. Для Windows.

Пера
источник
0

Вот сценарий CMD для этого:

@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%
Дмитрий
источник
0

Другая версия:

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%
syntax53
источник