Tương đương với lệnh Linux `hostname --fqdn` trong Windows XP?


33

Có cách nào để tìm tên miền đủ điều kiện của hộp Windows XP không?

Không quen thuộc với Windows Tôi sẽ mô tả những gì tôi đang tìm kiếm tương đương với lệnh hostname --fqdncó sẵn trong Linux.

Câu trả lời:


18

Bạn có thể tìm thấy nó trong thuộc tính hệ thống (tab "Tên máy tính").

Với dòng lệnh, bạn có thể chạy IPCONFIG /ALLvà xem các trường "Tên máy chủ" và "Hậu tố DNS chính".


Hai cách khác nhau cho kết quả khác nhau. ipconfig cung cấp những gì tôi đang mong đợi, nhưng trong tab 'Tên máy tính', tên miền là khác nhau. Nó trông giống như một tên nhóm làm việc hơn là một hậu tố tên miền. Đây có phải là một điều cụ thể của Windows trong đó chúng tương đương nhau không?
Grundlefleck

Trong tab "Tên máy tính", bạn nên xem giá trị "Tên máy tính đầy đủ"; giá trị "miền" là miền Windows (hoặc nhóm làm việc) mà máy tính là thành viên của.
Massimo

À đúng rồi. Vâng, phải có điều gì đó không đúng với cài đặt trên máy này, vì nó chỉ hiển thị tên máy chủ (có dấu chấm ở cuối). Có lẽ sẽ không phải đặt câu hỏi nếu nó đã được hiển thị như mong đợi :-D. +1
Grundlefleck

Bạn đã thử nhấp vào "Thay đổi" và sau đó "Khác" chưa?
Massimo

1
Chỉ cần nhớ một số hệ thống được bản địa hóa để tìm kiếm dòng thích hợp bởi nr có thể tốt hơn trong một số trường hợp (đó là dòng 5 afaik).
RnR

28

Không có tùy chọn như vậy cho hostnamelệnh trong windows. Tuy nhiên, điều này nên làm thủ thuật:

echo %COMPUTERNAME%.%USERDNSDOMAIN%

Hoặc bạn có thể grep (trong môi trường Windows: find /I "string") cho Host- và Domain từ sethoặc systeminfohoặc ipconfig -alltên và dán nó lại với nhau ở những nơi khác.

Chỉnh sửa: cố định Typo. Cảm ơn Benoit

Cập nhật: Biến %USERDNSDOMAIN%chỉ khả dụng khi đăng nhập vào tên miền ... Hậu tố DNS bạn nhận được từ máy chủ DHCP không được đưa vào biến môi trường (theo như tôi có thể tìm ra).


1
Biến thứ hai là "% USERDNSDOMAIN%".
Benoit

% USERDNSDOMAIN% dường như không phải là một biến trên hệ thống này. Trừ khi tôi làm sai điều gì: H: \> echo% COMPUTERNAME%.% USERDNSDOMAIN% [tên chính xác].% USERDNSDOMAIN%
Grundlefleck

Ach, quên rằng dán sẽ là khủng khiếp trong các ý kiến.
Grundlefleck

2
Bạn có thể sử dụng WMIC để truy xuất tên miền:wmic computersystem get domain
Noam Manos


1

bản thảo:

' 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 BATCH FILE ĐỂ GỌI TRÊN SCRIPT:

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

1

Hãy thử điều này từ dấu nhắc lệnh:

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

nhớ để sử dụng gấp đôi %cho %inếu sử dụng điều này trong một batchfile. ví dụ%%i

Một lý do bạn có thể muốn làm theo cách này là: nếu người dùng và máy tính của bạn ở các miền khác nhau, điều đó %USERDNSDOMAIN%sẽ không chính xác khi áp dụng cho máy tính của bạn. Nếu bạn chỉ có một tên miền và không có tên miền con, thì bạn có thể sử dụng các giải pháp khác ở trên nếu muốn.


1

Điều này cũng sẽ hoạt động và không có sự chậm trễ của systeminfo:

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


1
Sử dụng bốn khoảng trắng hàng đầu để định dạng câu trả lời của bạn dưới dạng 'mã'. Liên kết 'trợ giúp' có mặt khắp nơi thực sự hữu ích.
Xalious

0

Nếu bạn cần chuyển các tập lệnh shell Unix sang windows hoặc chỉ muốn làm việc trên CLI, hãy xem GNUwin32 . Nó cung cấp các công cụ phổ biến như cắt, grep, v.v. cho Windows.


0

Đây là một kịch bản CMD cho việc này:

@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

Phiên bản khác:

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%
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.