มีวิธีการค้นหาชื่อโดเมนแบบเต็มของกล่อง 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"
:) สำหรับโฮสต์ - และโดเมนจากset
หรือsysteminfo
หรือipconfig -all
ชื่อและกาวเข้าด้วยกันที่อื่น
แก้ไข: แก้ไข Typo ขอบคุณเบอนัวต์
อัปเดต:
ตัวแปร%USERDNSDOMAIN%
จะใช้ได้เฉพาะเมื่อเข้าสู่ระบบโดเมน ... ส่วนต่อท้าย DNS ที่คุณได้รับจากเซิร์ฟเวอร์ DHCP ไม่ได้ใส่ลงในตัวแปรสภาพแวดล้อม (เท่าที่ฉันจะเข้าใจได้)
wmic computersystem get domain
คำสั่งคือ:
ping -a localhost
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
ลองสิ่งนี้จากพรอมต์คำสั่ง:
FOR /F "tokens=2" %i in ('systeminfo ^| find /i "Domain"') do echo %computername%.%i
อย่าลืมใช้ double %
สำหรับ%i
ถ้าใช้สิ่งนี้ใน batchfile เช่น%%i
เหตุผลที่คุณอาจต้องการทำเช่นนี้คือ: หากผู้ใช้และคอมพิวเตอร์ของคุณอยู่ในโดเมนที่ต่างกัน%USERDNSDOMAIN%
จะไม่ถูกต้องเมื่อนำไปใช้กับคอมพิวเตอร์ของคุณ หากคุณมีโดเมนเดียวและไม่มีโดเมนย่อยคุณสามารถใช้โซลูชันอื่น ๆ ด้านบนได้หากต้องการ
สิ่งนี้จะใช้งานได้และไม่มีความล่าช้าของ systeminfo:
สำหรับ / f "tokens = 2 delims =:"% i in ('ipconfig / all ^ | findstr Search') ทำโดเมน SET =% i & SET newdomain = โดเมนใหม่:%% & 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%
รุ่นอื่น:
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%