Еквівалент команди 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.