有没有办法findWindows XP的完全合格的域名?
不熟悉Windows,我将描述我正在寻找的相当于Linux中可用的命令hostname --fqdn
。
您可以在系统属性(“计算机名称”选项卡)中find它。
使用命令行,您可以运行IPCONFIG /ALL
并查看“主机名”和“主DNS后缀”字段。
在windows中没有这样的选项给hostname
命令。 但是,这应该做的伎俩:
echo %COMPUTERNAME%.%USERDNSDOMAIN%
或者你可以grep(在Windows下: find /I "string"
)为主机和域从set
或systeminfo
或ipconfig -all
名称,并将其粘贴在其他地方。
编辑:固定错字。 谢谢Benoit
更新:variables%USERDNSDOMAIN%
仅在login到域时可用…您从DHCP服务器获得的DNS后缀不会放入环境variables(据我所知)。
该命令是:
ping -a localhost
如果您需要将Unix shell脚本移植到Windows或者只是想在CLI上工作,请查看GNUwin32 。 它为Windows提供了像cut,grep等常用工具。
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
DOSbatch file打电话给脚本:
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
请记住如果在batch file中使用这个,请使用%
作为%i
。 例如%%i
您可能需要这样做的一个原因是:如果您的用户和计算机位于不同的域中,则%USERDNSDOMAIN%
在应用于您的计算机时将不正确。 如果您只有一个域名和子域名,则可以使用上述其他解决scheme。
这也将工作,并没有systeminfo的延迟:
('ipconfig / all ^ | findstr'search')SET domain =%i&SET newdomain =%domain:=%&echo%COMPUTERNAME%。%newdomain%