Еквівалент команди Linux `hostname --fqdn` у Windows XP?


33

Чи є спосіб знайти повноцінне доменне ім'я вікна Windows XP?

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

Відповіді:


18

Ви можете знайти його у властивості системи (вкладка "Ім'я комп'ютера").

За допомогою командного рядка можна запустити IPCONFIG /ALLта ознайомитись із полями "Ім'я хоста" та "Первинний суфікс DNS".


Два різних способи дають різні результати. ipconfig дає те, що я очікував, але на вкладці "Ім'я комп'ютера" домен інший. Це схоже на ім’я робочої групи, а не на суфікс домену. Це специфічна для Windows річ, де вони якимось чином рівноцінні?
Grundlefleck

На вкладці "Ім'я комп'ютера" слід переглянути значення "Повне ім'я комп'ютера"; значення "домен" - це домен Windows (або робоча група), до якого належить комп'ютер.
Массімо

Ага правильно. Ну, має бути щось не так із встановленням на цій машині, оскільки воно лише показує ім'я хоста (з крапкою в кінці). Напевно, не довелося б ставити питання, якби він показував це як очікувалося :-D. +1
Grundlefleck

Ви спробували натиснути «Змінити», а потім «Більше»?
Массімо

1
Просто пам’ятайте, що деякі системи локалізовані, тому пошук потрібної лінії за nr може бути кращим у деяких випадках (це лінія 5 afaik).
RnR

28

Немає такої опції для hostnameкоманди у Windows. Однак для цього слід зробити фокус:

echo %COMPUTERNAME%.%USERDNSDOMAIN%

Або ви можете виокремити (під Windows: find /I "string") для Host- і домена з setабо systeminfoабо ipconfig -allімені та склейте її в іншому місці.

Редагувати: виправлено помилку друку. Дякую Бенуа

Оновлення: змінна %USERDNSDOMAIN%доступна лише під час входу в домен ... Суфікс DNS, який ви отримуєте з сервера DHCP, не вводиться в змінну середовища (наскільки я міг зрозуміти).


1
Друга змінна - "% USERDNSDOMAIN%".
Бенуа

% USERDNSDOMAIN% не є змінною у цій системі. Якщо я не роблю щось не так: H: \> echo% COMPUTERNAME%.% USERDNSDOMAIN% [правильне ім'я].% USERDNSDOMAIN%
Grundlefleck

Ну, забув про те, що в коментарях було б жахливе вставлення.
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

ФАЙЛ ДОСІЙНОЇ ДОСЛІДИ ДЛЯ ДЛЯ ДЛЯ ДЛЯ ДЛЯ ДЛЯ ДЛЯ ДОВІДКОВИХ СКРИПТ:

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

1

Спробуйте це з командного рядка:

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

не забудьте використовувати подвійний %для, %iякщо ви використовуєте це в пакетному файлі. напр%%i

Причина, яку ви можете зробити так, полягає в тому, що якщо ваші користувачі та комп’ютери знаходяться в різних областях, воно %USERDNSDOMAIN%не буде правильним при застосуванні до комп'ютера. Якщо у вас є лише один домен і немає дочірніх доменів, тоді ви можете використовувати інші рішення вище, якщо хочете.


1

Це також буде працювати і не матиме затримки systeminfo:

для / f "tokens = 2 delims =:"% i in ('ipconfig / all ^ | findstr Пошук') зробіть SET домен =% i & SET newdomain =% domain: =% & echo% COMPUTERNAME%.% newdomain%


1
Використовуйте чотири пробіли, щоб відформатувати свою відповідь як "код". Повсюдний посилання "довідка" насправді корисний.
Xalorous

0

Якщо вам потрібно перенести скрипти оболонки Unix до Windows або просто подобається працювати над CLI, подивіться на GNUwin32 . Він пропонує поширені інструменти, такі як вирізання, греп тощо для 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%
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.