เทียบเท่าคำสั่ง Linux ชื่อโฮสต์ --fqdn` ใน Windows XP หรือไม่


33

มีวิธีการค้นหาชื่อโดเมนแบบเต็มของกล่อง Windows XP หรือไม่

การไม่คุ้นเคยกับ Windows ฉันจะอธิบายสิ่งที่ฉันกำลังมองหาซึ่งเทียบเท่ากับคำสั่งที่hostname --fqdnมีใน Linux

คำตอบ:


18

คุณสามารถค้นหาได้ในคุณสมบัติของระบบ (แท็บ "ชื่อคอมพิวเตอร์")

ด้วยบรรทัดคำสั่งคุณสามารถเรียกใช้IPCONFIG /ALLและดูที่ฟิลด์ "ชื่อโฮสต์" และ "ส่วนต่อท้าย DNS หลัก"


สองวิธีที่ต่างกันให้ผลลัพธ์ที่แตกต่าง ipconfig ให้สิ่งที่ฉันคาดหวัง แต่ในแท็บ 'ชื่อคอมพิวเตอร์' โดเมนจะแตกต่างกัน ดูเหมือนชื่อเวิร์กกรุ๊ปมากกว่าส่วนต่อท้ายโดเมน นี่เป็นสิ่งเฉพาะของ Windows ที่มีความหมายเทียบเท่ากันหรือไม่?
Grundlefleck

ในแท็บ "ชื่อคอมพิวเตอร์" คุณควรดูค่า "ชื่อคอมพิวเตอร์แบบเต็ม" ค่า "โดเมน" คือโดเมน Windows (หรือเวิร์กกรุ๊ป) ที่คอมพิวเตอร์เป็นสมาชิก
Massimo

อ่าใช่มั้ย ต้องมีบางอย่างผิดปกติในการติดตั้งบนเครื่องนี้เพราะมันจะแสดงเฉพาะชื่อโฮสต์ (ที่มีจุดท้าย) อาจจะไม่ต้องถามคำถามหากมีการแสดงตามที่คาดไว้ :-D +1
Grundlefleck

คุณได้ลองคลิกที่ "เปลี่ยน" แล้ว "เพิ่มเติม"?
Massimo

1
เพียงจำไว้ว่าบางระบบมีการแปลดังนั้นการค้นหาบรรทัดที่เหมาะสมโดย nr อาจดีกว่าในบางกรณี (เป็นบรรทัดที่ 5 afaik)
RnR

28

ไม่มีตัวเลือกดังกล่าวสำหรับhostnameคำสั่งใน windows อย่างไรก็ตามสิ่งนี้ควรทำเคล็ดลับ:

echo %COMPUTERNAME%.%USERDNSDOMAIN%

หรือคุณสามารถ grep (ภายใต้ Windows find /I "string":) สำหรับโฮสต์ - และโดเมนจากsetหรือsysteminfoหรือipconfig -allชื่อและกาวเข้าด้วยกันที่อื่น

แก้ไข: แก้ไข Typo ขอบคุณเบอนัวต์

อัปเดต: ตัวแปร%USERDNSDOMAIN%จะใช้ได้เฉพาะเมื่อเข้าสู่ระบบโดเมน ... ส่วนต่อท้าย DNS ที่คุณได้รับจากเซิร์ฟเวอร์ DHCP ไม่ได้ใส่ลงในตัวแปรสภาพแวดล้อม (เท่าที่ฉันจะเข้าใจได้)


1
ตัวแปรที่สองคือ "% USERDNSDOMAIN%"
เบอนัวต์

% USERDNSDOMAIN% ดูเหมือนจะไม่เป็นตัวแปรในระบบนี้ นอกจากว่าฉันทำอะไรผิด: H: \> echo% ชื่อคอมพิวเตอร์%.% 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

ไฟล์ BATCH DOS เพื่อเรียกร้องให้เหนือสคริปต์:

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

อย่าลืมใช้ double %สำหรับ%iถ้าใช้สิ่งนี้ใน batchfile เช่น%%i

เหตุผลที่คุณอาจต้องการทำเช่นนี้คือ: หากผู้ใช้และคอมพิวเตอร์ของคุณอยู่ในโดเมนที่ต่างกัน%USERDNSDOMAIN%จะไม่ถูกต้องเมื่อนำไปใช้กับคอมพิวเตอร์ของคุณ หากคุณมีโดเมนเดียวและไม่มีโดเมนย่อยคุณสามารถใช้โซลูชันอื่น ๆ ด้านบนได้หากต้องการ


1

สิ่งนี้จะใช้งานได้และไม่มีความล่าช้าของ systeminfo:

สำหรับ / f "tokens = 2 delims =:"% i in ('ipconfig / all ^ | findstr Search') ทำโดเมน SET =% i & SET newdomain = โดเมนใหม่:%% & echo% COMPUTERNAME%.% newdomain%


1
ใช้ช่องว่างสี่ช่องเพื่อจัดรูปแบบคำตอบของคุณเป็น 'รหัส' ลิงก์ 'ความช่วยเหลือ' ที่แพร่หลายนั้นมีประโยชน์จริง ๆ
Xalorous

0

หากคุณจำเป็นต้องพอร์ตสคริปต์เชลล์ยูนิกซ์กับหน้าต่างหรือเช่นเดียวกับการทำงานบน CLI ที่มีลักษณะที่GnuWin32 มันมีเครื่องมือทั่วไปเช่น cut, grep, และอื่น ๆ สำหรับ 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%
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.