Есть ли способ найти полное доменное имя коробки Windows XP?
Будучи незнакомым с Windows, я бы описал то, что я ищу, как эквивалент команды hostname --fqdn
, доступной в Linux.
В windows нет такой опции для команды hostname
. Однако это должно помочь:
echo %COMPUTERNAME%.%USERDNSDOMAIN%
Или вы можете выполнить grep (в Windows: find /I "string"
) для Host- и Domain из set
или ysteminfo
или ipconfig -all
имени и склеить его в другом месте.
Edit: исправлена опечатка. Спасибо Бенуа
Обновление:
Переменная %USERDNSDOMAIN%
доступна только при входе в домен... Суффикс DNS, который вы получаете от DHCP-сервера, не помещается в переменную окружения (насколько я смог понять).
Команда:
ping -a localhost
Попробуйте эту команду из командной строки:
FOR /F "tokens=2" %i in ('systeminfo ^| find /i "Domain"') do echo %computername%.%i
не забывайте использовать двойной %
на %Я
, если вы используете это в пакетник. например, %%я
Причина, по которой вы можете захотеть сделать это этот путь: если ваши пользователи и компьютеры находятся в разных доменах, %USERDNSDOMAIN%
не будет исправлять при нанесении на компьютер.
Если у вас только один домен и никаких дочерних доменов, то вы можете использовать другие решения, если вам нравится.
языка :
' 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
Это также будет работать и не иметь задержки systeminfo:
к /ф "и жетонов=2 delims=:" По%, я в ('ipconfig /все ^| findstr команда поиск ') сделать комплект=%я домена & набор newdomain=%домен: =% & Эхо %ИМЯ_КОМПЬЮТЕРА%.%newdomain%
Вот скрипт, 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%