Есть ли способ найти полное доменное имя Windows XP?
Будучи незнакомым с Windows, я бы описал то, что я ищу, как эквивалент команды, hostname --fqdn
доступной в Linux.
Есть ли способ найти полное доменное имя Windows XP?
Будучи незнакомым с Windows, я бы описал то, что я ищу, как эквивалент команды, hostname --fqdn
доступной в Linux.
Ответы:
Вы можете найти его в свойствах системы (вкладка «Имя компьютера»).
С помощью командной строки вы можете запустить IPCONFIG /ALL
и просмотреть поля «Имя хоста» и «Основной DNS-суффикс».
Нет такой опции для hostname
команды в Windows. Тем не менее, это должно сделать свое дело:
echo %COMPUTERNAME%.%USERDNSDOMAIN%
Или вы можете grep (под Windows find /I "string"
:) для Host- и Domain от set
или systeminfo
или ipconfig -all
name и склеить его вместе в другом месте.
Редактировать: исправлено опечатка. Спасибо Бенуа
Обновление:
переменная %USERDNSDOMAIN%
доступна только при входе в домен ... DNS-суффикс, который вы получаете с DHCP-сервера, не помещается в переменную среды (насколько я мог понять).
wmic computersystem get domain
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
Попробуйте это из командной строки:
FOR /F "tokens=2" %i in ('systeminfo ^| find /i "Domain"') do echo %computername%.%i
не забудьте использовать double %
для %i
использования этого в пакетном файле. например%%i
Причина, по которой вы можете захотеть сделать это следующим образом: если ваши пользователи и компьютеры находятся в разных доменах, это %USERDNSDOMAIN%
не будет правильно применительно к вашему компьютеру. Если у вас есть только один домен и нет дочерних доменов, вы можете использовать другие решения, описанные выше, если хотите.
Это также будет работать и не будет задерживать systeminfo:
for / f "tokens = 2 delims =:"% i in ('ipconfig / all ^ | findstr Search') do SET domain =% i & SET newdomain =% domain: =% & echo% COMPUTERNAME%.% 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%