Windows XP中是否等效于Linux命令`hostname --fqdn`?


33

有没有办法找到Windows XP盒的标准域名?

不熟悉Windows,我将把我要寻找的内容描述为与hostname --fqdnLinux中可用的命令等效。

Answers:


18

您可以在系统属性(“计算机名称”选项卡)中找到它。

通过命令行,您可以运行IPCONFIG /ALL并查看“主机名”和“主DNS后缀”字段。


两种不同的方法给出不同的结果。ipconfig给出了我所期望的,但是在“计算机名称”选项卡中,域是不同的。它看起来像工作组名称,而不是域后缀。这是Windows特定的东西,它们在某种程度上是等效的吗?
Grundlefleck

在“计算机名称”选项卡中,您应该查看“计算机全名”值;“域”值是计算机所属的Windows域(或工作组)。
马西莫2009年

对啊 嗯,这台机器上的安装肯定有问题,因为它仅显示主机名(末尾带有一个点)。可能不必问这个问题是否已经按预期显示:-D。+1
Grundlefleck

您是否尝试过单击“更改”,然后单击“更多”?
马西莫2009年

1
请记住,有些系统是本地化的,因此在某些情况下通过nr寻找合适的线可能会更好(这是第5行afaik)。
RnR

28

hostnameWindows中的命令没有这样的选项。但是,这应该可以解决问题:

echo %COMPUTERNAME%.%USERDNSDOMAIN%

:或者你可以grep(在Windows下find /I "string"从基于主机和域名)setsysteminfoipconfig -all名称以及其他地方一起胶水。

编辑:固定错字。感谢Benoit

更新:%USERDNSDOMAIN%仅当登录到域时 该变量才可用...从DHCP服务器获得的DNS后缀未放入环境变量中(据我所知)。


1
第二个变量是“%USERDNSDOMAIN%”。
贝努瓦

在此系统上,%USERDNSDOMAIN%似乎不是变量。除非我做错了:H:\> echo%COMPUTERNAME%。%USERDNSDOMAIN%[正确名称]。%USERDNSDOMAIN%
Grundlefleck

阿奇(Ach)忘记了评论中的粘贴内容将是可怕的。
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

上面的脚本调用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

记得双用%%i,如果在批处理文件用这个。例如%%i

您可能要这样做的原因是:如果您的用户和计算机位于不同的域中,%USERDNSDOMAIN%则将其应用于您的计算机时将不正确。如果只有一个域,没有子域,则可以根据需要使用上面的其他解决方案。


1

这也将起作用,并且没有systeminfo的延迟:

对于/ f“ tokens = 2 delims =:”%i in('ipconfig / all ^ | findstr Search')做SET domain =%i&SET newdomain =%domain:=%&echo%COMPUTERNAME%。%newdomain%


1
使用四个前导空格将答案的格式设置为“代码”。普遍存在的“帮助”链接实际上是有帮助的。
Xalorous

0

如果您需要将Unix Shell脚本移植到Windows或只是想在CLI上工作,请查看GNUwin32。它为Windows提供了诸如cut,grep等常用工具。


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%
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.